- java.lang.Object
-
- javax.security.auth.kerberos.KerberosTicket
-
- All Implemented Interfaces:
-
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
-
-
构造方法摘要
构造方法 Constructor 描述 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接收或从缓存读取的凭据信息。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
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()
-
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
的内容丰富的文字表示。
-
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
,KerberosTicket
true,否则为false。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.hashCode()
,HashMap
-
-