- java.lang.Object
-
- javax.security.auth.kerberos.KerberosTicket
-
- 实现的所有接口
-
Serializable
,Destroyable
,Refreshable
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
- 另请参见:
-
Subject
,PrivateCredentialPermission
,LoginContext
,GSSCredential
,GSSManager
, Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 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
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
destroy()
销毁故障单并销毁存储在其中的任何敏感信息。boolean
equals(Object other)
将指定对象与此KerberosTicket
进行相等性比较。Date
getAuthTime()
返回客户端的身份验证时间。KerberosPrincipal
getClient()
返回与此票证关联的客户端主体。InetAddress[]
getClientAddresses()
返回可以使用故障单的地址列表。byte[]
getEncoded()
返回整个故障单的ASN.1编码。Date
getEndTime()
返回此故障单有效期的到期时间。boolean[]
getFlags()
返回与此票证关联的标志。Date
getRenewTill()
返回此故障单的最新到期时间,包括所有续订。KerberosPrincipal
getServer()
返回与此票证关联的服务主体。SecretKey
getSessionKey()
返回与此票证关联的会话密钥。int
getSessionKeyType()
返回与Kerberos协议规范定义的此故障单关联的会话密钥的密钥类型。Date
getStartTime()
返回此故障单有效期的开始时间。int
hashCode()
返回此KerberosTicket
的哈希码。boolean
isCurrent()
确定此票证是否仍然是最新的。boolean
isDestroyed()
确定此故障单是否已被销毁。boolean
isForwardable()
确定此票证是否可转发。boolean
isForwarded()
确定是否已根据涉及转发的票证授予票证的身份验证转发或发出此票证。boolean
isInitial()
确定此票证是否是使用Kerberos AS-Exchange协议颁发的,而不是基于某些票证授予票证颁发的。boolean
isPostdated()
确定这张票是过期的。boolean
isProxiable()
确定此票证是否可代理。boolean
isProxy()
确定此票证是代理票证。boolean
isRenewable()
确定此票证是否可以续订。void
refresh()
延长此票证的有效期。String
toString()
返回此KerberosTicket
的信息性文本表示KerberosTicket
。
-
-
-
构造方法详细信息
-
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()
-
destroy
public void destroy() throws DestroyFailedException
销毁故障单并销毁存储在其中的任何敏感信息。- Specified by:
-
destroy
在界面Destroyable
- 异常
-
DestroyFailedException
- 如果销毁操作失败。
-
isDestroyed
public boolean isDestroyed()
确定此故障单是否已被销毁。- Specified by:
-
isDestroyed
在界面Destroyable
- 结果
-
如果此
Object
已被销毁,Object
true,否则为false。
-
toString
public String toString()
返回此KerberosTicket
的信息性文本表示KerberosTicket
。
-
hashCode
public int hashCode()
返回此KerberosTicket
的哈希码。- 重写:
-
hashCode
在课堂上Object
- 结果
-
这个
KerberosTicket
的哈希码。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object other)
将指定对象与此KerberosTicket
进行比较以获得相等性。 如果给定对象也是KerberosTicket
并且两个KerberosTicket
实例等效,则返回true。 被破坏的KerberosTicket
对象仅等于它自己。- 重写:
-
equals
在类Object
- 参数
-
other
- 要比较的对象 - 结果
-
如果指定的对象等于此
KerberosTicket
,则返回true,否则KerberosTicket
false。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.hashCode()
,HashMap
-
-