Class KerberosTicket

  • All Implemented Interfaces:
    SerializableDestroyableRefreshable


    public class KerberosTicket
    extends Object
    implements Destroyable, Refreshable, Serializable
    从客户端的角度来看,该类封装了Kerberos票证和相关信息。 它捕获密钥分配中心(KDC)在Kerberos协议规范( RFC 4120 )中定义的应答消息KDC-REP中向客户端发送的所有信息。

    将用户认证到KDC的所有Kerberos JAAS登录模块都应该使用此类。 如果可用,登录模块甚至可以从操作系统中的故障单缓存中读取此信息,而不是直接与KDC进行通信。 在JAAS身份验证过程的提交阶段,JAAS登录模块应该实例化该类,并将实例存储在一个Subject的私有凭据集中。

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

    请注意,本课程适用于两张票授予票和其他常规服务票。 机票授予票只是一个更广泛的服务票的特例。

    Implementation Note:
    JDK参考实现中的JAAS登录模块在注销后销毁所有票证。
    从以下版本开始:
    1.4
    另请参见:
    SubjectPrivateCredentialPermissionLoginContextGSSCredentialGSSManagerSerialized Form
    • 构造方法详细信息

      • 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 - 机票的绝对过期时间,包括所有可能的更新。 对于不可续期的门票,此字段可能为空。
        clientAddresses - 客户可以使用机票的地址。 票据可以从任何地址使用时,该字段可能为空。
    • 方法详细信息

      • 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 - 如果这张票被销毁
        另请参见:
        getSessionKey()
      • isForwardable

        public final boolean isForwardable​()
        确定此机票是否可转发。
        结果
        如果这张票是可转发的,则为真,如果不可转发或销毁则为假。
      • isForwarded

        public final boolean isForwarded​()
        确定这张票是否已经转发或基于涉及转发的票证授予票证的认证。
        结果
        如果这张票已经转发或基于涉及转发的票证授予票的身份验证而发出,否则或以其他方式销毁,则为真。
      • isProxiable

        public final boolean isProxiable​()
        确定这张票是否可以投票。
        结果
        如果这张票是可以投票的话,则是真的,如果不是可以挖掘或者销毁,则是假的。
      • isProxy

        public final boolean isProxy​()
        确定这张票是一张代理机票。
        结果
        如果这张票是一张代理机票,则为真,如果不是代理机票或销毁,则为假。
      • isPostdated

        public final boolean isPostdated​()
        确定这张票是过时的。
        结果
        如果这张票是过时的,则为真,如果不是过时的或销毁的,则为假。
      • isRenewable

        public final boolean isRenewable​()
        确定这张票是可续期的。 如果是这样,可以调用refresh方法,假设更新的有效期还没有结束。
        结果
        如果这张票是可续期的,则为真,如果不可续期或被毁,则为假。
      • 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如果该字段未设置或此 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​()
        确定这张票是否仍然是最新的。
        Specified by:
        isCurrent在接口 Refreshable
        结果
        如果此票仍然是最新的,则为真,如果不是当前的或销毁的则为假。
      • refresh

        public void refresh​()
                     throws RefreshFailedException
        延长此票的有效期。 如果刷新操作成功,机票将包含一个新的会话密钥。 如果机票不可更新或最近允许的更新时间过去,刷新操作将失败。 KDC返回的任何其他错误也将导致此方法失败。 注意:此方法与此对象的访问器方法不同步。 因此,调用者需要知道可能访问此多个线程并尝试在同一时间更新它。
        Specified by:
        refresh在接口 Refreshable
        异常
        IllegalStateException - 如果这张票被销毁
        RefreshFailedException - 如果机票不可续订,或最近允许的更新时间已过,或KDC返回一些错误。
        另请参见:
        isRenewable()getRenewTill()
      • isDestroyed

        public boolean isDestroyed​()
        确定这张票是否已被销毁。
        Specified by:
        isDestroyed在接口 Destroyable
        结果
        如果这个 Object被销毁, Object true,否则为false。
      • toString

        public String toString​()
        返回此 KerberosTicket的内容丰富的文字表示。
        重写:
        toStringObject
        结果
        这个 KerberosTicket的内容丰富的文字表示。
      • equals

        public boolean equals​(Object other)
        将指定的对象与此KerberosTicket进行比较以获得相等性。 如果给定对象也是KerberosTicket ,并且两个KerberosTicket实例是等价的,则返回true。 一个被破坏的KerberosTicket对象只等于自己。
        重写:
        equalsObject
        参数
        other - 要比较的对象
        结果
        如果指定的对象等于这个 KerberosTicketKerberosTicket true,否则为false。
        从以下版本开始:
        1.6
        另请参见:
        Object.hashCode()HashMap