Class KerberosTicket

  • 实现的所有接口
    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)
        使用客户端从KDC接收或从缓存中读取的凭证信息构造 KerberosTicket
        参数
        asn1Encoding - Kerberos协议规范定义的 asn1Encoding的ASN.1编码。
        client - 拥有此服务票证的客户端
        server - 此票证所用的服务
        sessionKey - 必须用于加密将发送到服务器的身份验证器的会话密钥的原始字节
        keyType - Kerberos协议规范定义的会话密钥的密钥类型。
        flags - 机票标志。 此数组中的每个元素都指示ASN.1 BitString中表示票证标志的相应位的值。 如果此数组中的元素数小于Kerberos协议使用的标志数,则缺少的标志将填入false。
        authTime - 客户端的初始身份验证时间
        startTime - 票证有效的时间。 这可能为null,在这种情况下,authTime的值被视为startTime。
        endTime - 票证不再有效的时间
        renewTill - renewTill的绝对到期时间,包括可能的所有续订。 对于不可续订的票证,此字段可能为空。
        clientAddresses - 客户端可以使用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()
        确定此票证是否可转发。
        结果
        如果此票证可转发,则为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如果未设置该字段或此 null单被销毁)。
      • getStartTime

        public final Date getStartTime()
        返回此故障单有效期的开始时间。
        结果
        此票证有效期的开始时间或 null如果未设置字段或销售此票证)。
      • getEndTime

        public final Date getEndTime()
        返回此故障单有效期的到期时间。
        结果
        此票证有效期的到期时间,如果销毁 null
      • getRenewTill

        public final Date getRenewTill()
        返回此故障单的最新到期时间,包括所有续订。 这将为不可更新的票证返回空值。
        结果
        此票证的最新到期时间,如果销毁 null
      • getClientAddresses

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

        public final byte[] getEncoded()
        返回整个故障单的ASN.1编码。
        结果
        整个故障单的ASN.1编码。 每次调用此方法时都会返回一个新的字节数组。
        异常
        IllegalStateException - 如果此票据被销毁
      • isCurrent

        public boolean isCurrent()
        确定此票证是否仍然是最新的。
        Specified by:
        isCurrent接口 Refreshable
        结果
        如果此票证仍为当前票证,则为true;如果不是当前票据或已销毁,则为false
      • 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的信息性文本表示 KerberosTicket
        重写:
        toStringObject
        结果
        该信息是 KerberosTicket的内容丰富的文字表述。
      • equals

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