Class KerberosTicket

java.lang.Object
javax.security.auth.kerberos.KerberosTicket
所有已实现的接口:
Serializable, Destroyable, Refreshable

public class KerberosTicket extends Object implements Destroyable, Refreshable, Serializable
该类封装了一个Kerberos票据及相关信息,从客户端的角度来看。它捕获了密钥分发中心(KDC)在Kerberos协议规范中定义的回复消息KDC-REP中发送给客户端的所有信息。

所有认证用户到KDC的Kerberos JAAS登录模块都应该使用这个类。在可用的情况下,登录模块甚至可以从操作系统中的票据缓存中读取这些信息,而不是直接与KDC通信。在JAAS认证过程的提交阶段,JAAS登录模块应该实例化这个类,并将实例存储在Subject的私有凭据集中。

如果应用程序需要访问Subject中的KerberosTicket实例,则可能需要被授予PrivateCredentialPermission。当应用程序依赖于默认的JGSS Kerberos机制来访问KerberosTicket时,不需要此权限。但在这种情况下,应用程序将需要适当的ServicePermission

请注意,这个类适用于票据授予票据和其他常规服务票据。票据授予票据只是更一般的服务票据的特殊情况。

实现注意事项:
JDK参考实现中的JAAS登录模块在注销后销毁所有票据。
自 JDK 版本:
1.4
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    KerberosTicket(byte[] asn1Encoding, KerberosPrincipal client, KerberosPrincipal server, byte[] sessionKey, int keyType, boolean[] flags, Date authTime, Date startTime, Date endTime, Date renewTill, InetAddress[] clientAddresses)
    构造一个KerberosTicket,使用客户端从KDC接收或从缓存中读取的凭据信息。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    销毁票据并销毁其中存储的任何敏感信息。
    boolean
    equals(Object other)
    将指定的对象与此KerberosTicket进行比较,以确定是否相等。
    final Date
    返回客户端进行身份验证的时间。
    返回与此票据关联的客户端主体。
    final InetAddress[]
    返回可以使用该票据的地址列表。
    final byte[]
    返回整个票据的ASN.1编码。
    final Date
    返回此票据有效期的到期时间。
    final boolean[]
    返回与此票据关联的标志。
    final Date
    返回此票据的最新到期时间,包括所有续订。
    返回与此票据关联的服务主体。
    final SecretKey
    返回与此票据关联的会话密钥。
    final int
    返回与此票据关联的会话密钥的密钥类型,由Kerberos协议规范定义。
    final Date
    返回此票据有效期的开始时间。
    int
    返回此KerberosTicket的哈希码。
    boolean
    确定此票据是否仍然有效。
    boolean
    确定此票据是否已被销毁。
    final boolean
    确定此票据是否可转发。
    final boolean
    确定此票据是否已被转发或是基于已转发票据授予票据进行身份验证而发出的。
    final boolean
    确定此票据是否是使用Kerberos AS-Exchange协议发出的,而不是基于某个票据授予票据发出的。
    final boolean
    确定此票据是否是预约的。
    final boolean
    确定此票据是否可代理。
    final boolean
    确定此票据是否是代理票据。
    final boolean
    确定此票据是否可续订。
    void
    延长此票据的有效期。
    返回此KerberosTicket的信息性文本表示。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • KerberosTicket

      public KerberosTicket(byte[] asn1Encoding, KerberosPrincipal client, KerberosPrincipal server, byte[] sessionKey, int keyType, boolean[] flags, Date authTime, Date startTime, Date endTime, Date renewTill, InetAddress[] clientAddresses)
      构造一个KerberosTicket,使用客户端从KDC接收或从缓存中读取的凭据信息。
      参数:
      asn1Encoding - 根据Kerberos协议规范定义的票据的ASN.1编码。
      client - 拥有此服务票据的客户端
      server - 此票据所用于的服务
      sessionKey - 必须用于加密将发送到服务器的认证者的会话密钥的原始字节
      keyType - 会话密钥的密钥类型,由Kerberos协议规范定义。
      flags - 票据标志。数组中的每个元素指示表示票据标志的ASN.1 BitString中相应位的值。如果数组中的元素数量少于Kerberos协议使用的标志数量,则缺失的标志将用false填充。
      authTime - 客户端的初始认证时间
      startTime - 票据将有效的时间之后的时间。如果为null,则将authTime的值视为startTime。
      endTime - 票据将不再有效的时间
      renewTill - 票据的绝对到期时间,包括可能的所有续订。对于不可续订的票据,此字段可能为null。
      clientAddresses - 客户端可以使用票据的地址。当票据可从任何地址使用时,此字段可能为null。
  • Method Details

    • getClient

      public final KerberosPrincipal getClient()
      返回与此票据关联的客户端主体。
      返回:
      客户端主体,如果已销毁则返回null
    • getServer

      public final KerberosPrincipal getServer()
      返回与此票据关联的服务主体。
      返回:
      服务主体,如果已销毁则返回null
    • getSessionKey

      public final SecretKey getSessionKey()
      返回与此票据关联的会话密钥。返回值始终是一个EncryptionKey对象。
      返回:
      会话密钥。
      抛出:
      IllegalStateException - 如果此票据已被销毁
    • getSessionKeyType

      public final int getSessionKeyType()
      返回与此票据关联的会话密钥的密钥类型,由Kerberos协议规范定义。
      返回:
      与此票据关联的会话密钥的密钥类型。
      抛出:
      IllegalStateException - 如果此票据已被销毁
      参见:
    • isForwardable

      public final boolean isForwardable()
      确定此票据是否可转发。
      返回:
      如果此票据可转发,则返回true,如果不可转发或已销毁,则返回false。
    • isForwarded

      public final boolean isForwarded()
      确定此票据是否已被转发或是基于已转发票据授予票据进行身份验证而发出的。
      返回:
      如果此票据已被转发或是基于已转发票据授予票据进行身份验证而发出的,则返回true,否则返回false或已销毁。
    • isProxiable

      public final boolean isProxiable()
      确定此票据是否可代理。
      返回:
      如果此票据可代理,则返回true,如果不可代理或已销毁,则返回false。
    • isProxy

      public final boolean isProxy()
      确定此票据是否是代理票据。
      返回:
      如果此票据是代理票据,则返回true,如果不是代理票据或已销毁,则返回false。
    • isPostdated

      public final boolean isPostdated()
      确定此票据是否是预约的。
      返回:
      如果此票据是预约的,则返回true,如果不是预约的或已销毁,则返回false。
    • isRenewable

      public final boolean isRenewable()
      确定此票据是否可续订。如果是,可以调用refresh方法,假设续订的有效期尚未结束。
      返回:
      如果此票据可续订,则返回true,如果不可续订或已销毁,则返回false。
    • isInitial

      public final boolean isInitial()
      确定此票据是否是使用Kerberos AS-Exchange协议发出的,而不是基于某个票据授予票据发出的。
      返回:
      如果此票据是使用Kerberos AS-Exchange协议发出的,则返回true,如果不是以此方式发出或已销毁,则返回false。
    • getFlags

      public final boolean[] getFlags()
      返回与此票据关联的标志。返回数组中的每个元素指示表示票据标志的ASN.1 BitString中相应位的值。
      返回:
      与此票据关联的标志,如果已销毁则返回null
    • getAuthTime

      public final Date getAuthTime()
      返回客户端进行身份验证的时间。
      返回:
      客户端进行身份验证的时间,如果字段未设置或此票据已销毁则返回null
    • getStartTime

      public final Date getStartTime()
      返回此票证有效期的开始时间。
      返回:
      此票证有效期的开始时间,如果字段未设置或此票证已销毁,则返回null
    • getEndTime

      public final Date getEndTime()
      返回此票证有效期的到期时间。
      返回:
      此票证有效期的到期时间,如果已销毁则返回null
    • getRenewTill

      public final Date getRenewTill()
      返回此票证的最新到期时间,包括所有续订。对于不可续订的票证,将返回null值。
      返回:
      此票证的最新到期时间,如果已销毁则返回null
    • getClientAddresses

      public final InetAddress[] getClientAddresses()
      返回可以使用此票证的地址列表。
      返回:
      地址列表,如果未提供该字段或此票证已销毁,则返回null
    • getEncoded

      public final byte[] getEncoded()
      返回整个票证的ASN.1编码。
      返回:
      整个票证的ASN.1编码。每次调用此方法时都会返回一个新的字节数组。
      抛出:
      IllegalStateException - 如果此票证已销毁
    • isCurrent

      public boolean isCurrent()
      确定此票证是否仍然有效。
      指定者:
      isCurrent 在接口 Refreshable
      返回:
      如果此票证仍然有效,则返回true,否则返回false。
    • refresh

      public void refresh() throws RefreshFailedException
      延长此票证的有效期。如果刷新操作成功,票证将包含一个新的会话密钥。如果票证不可续订或最新允许的续订时间已过,则刷新操作将失败。KDC返回任何其他错误也会导致此方法失败。注意:此方法与对象的访问器方法不同步。因此,调用者需要注意可能同时访问此对象并尝试同时续订它的多个线程。
      指定者:
      refresh 在接口 Refreshable
      抛出:
      IllegalStateException - 如果此票证已销毁
      RefreshFailedException - 如果票证不可续订,或最新允许的续订时间已过,或KDC返回某些错误。
      参见:
    • destroy

      public void destroy() throws DestroyFailedException
      销毁票证并销毁其中存储的任何敏感信息。
      指定者:
      destroy 在接口 Destroyable
      抛出:
      DestroyFailedException - 如果销毁操作失败。
    • isDestroyed

      public boolean isDestroyed()
      确定此票证是否已销毁。
      指定者:
      isDestroyed 在接口 Destroyable
      返回:
      如果此Object已销毁,则返回true,否则返回false。
    • toString

      public String toString()
      返回此KerberosTicket的信息性文本表示。
      覆盖:
      toString 在类 Object
      返回:
      KerberosTicket的信息性文本表示。
    • hashCode

      public int hashCode()
      返回此KerberosTicket的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      KerberosTicket的哈希码。
      自JDK版本:
      1.6
      参见:
    • equals

      public boolean equals(Object other)
      将指定对象与此KerberosTicket进行比较以确定是否相等。如果给定对象也是KerberosTicket,并且两个KerberosTicket实例是等效的,则返回true。销毁的KerberosTicket对象仅等于自身。
      覆盖:
      equals 在类 Object
      参数:
      other - 要比较的对象
      返回:
      如果指定对象等于此KerberosTicket,则返回true,否则返回false。
      自JDK版本:
      1.6
      参见: