java.lang.Object
javax.security.auth.kerberos.KerberosTicket
- 所有已实现的接口:
-
Serializable
,Destroyable
,Refreshable
该类封装了一个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
ConstructorDescriptionKerberosTicket
(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 TypeMethodDescriptionvoid
destroy()
销毁票据并销毁其中存储的任何敏感信息。boolean
将指定的对象与此KerberosTicket
进行比较,以确定是否相等。final Date
返回客户端进行身份验证的时间。final KerberosPrincipal
返回与此票据关联的客户端主体。final InetAddress[]
返回可以使用该票据的地址列表。final byte[]
返回整个票据的ASN.1编码。final Date
返回此票据有效期的到期时间。final boolean[]
getFlags()
返回与此票据关联的标志。final Date
返回此票据的最新到期时间,包括所有续订。final KerberosPrincipal
返回与此票据关联的服务主体。final SecretKey
返回与此票据关联的会话密钥。final int
返回与此票据关联的会话密钥的密钥类型,由Kerberos协议规范定义。final Date
返回此票据有效期的开始时间。int
hashCode()
返回此KerberosTicket
的哈希码。boolean
确定此票据是否仍然有效。boolean
确定此票据是否已被销毁。final boolean
确定此票据是否可转发。final boolean
确定此票据是否已被转发或是基于已转发票据授予票据进行身份验证而发出的。final boolean
确定此票据是否是使用Kerberos AS-Exchange协议发出的,而不是基于某个票据授予票据发出的。final boolean
确定此票据是否是预约的。final boolean
确定此票据是否可代理。final boolean
isProxy()
确定此票据是否是代理票据。final boolean
确定此票据是否可续订。void
refresh()
延长此票据的有效期。toString()
返回此KerberosTicket
的信息性文本表示。
-
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
返回与此票据关联的客户端主体。- 返回:
-
客户端主体,如果已销毁则返回
null
。
-
getServer
返回与此票据关联的服务主体。- 返回:
-
服务主体,如果已销毁则返回
null
。
-
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
返回客户端进行身份验证的时间。- 返回:
-
客户端进行身份验证的时间,如果字段未设置或此票据已销毁则返回
null
。
-
getStartTime
返回此票证有效期的开始时间。- 返回:
-
此票证有效期的开始时间,如果字段未设置或此票证已销毁,则返回
null
。
-
getEndTime
返回此票证有效期的到期时间。- 返回:
-
此票证有效期的到期时间,如果已销毁则返回
null
。
-
getRenewTill
返回此票证的最新到期时间,包括所有续订。对于不可续订的票证,将返回null值。- 返回:
-
此票证的最新到期时间,如果已销毁则返回
null
。
-
getClientAddresses
返回可以使用此票证的地址列表。- 返回:
-
地址列表,如果未提供该字段或此票证已销毁,则返回
null
。
-
getEncoded
public final byte[] getEncoded()返回整个票证的ASN.1编码。- 返回:
- 整个票证的ASN.1编码。每次调用此方法时都会返回一个新的字节数组。
- 抛出:
-
IllegalStateException
- 如果此票证已销毁
-
isCurrent
public boolean isCurrent()确定此票证是否仍然有效。- 指定者:
-
isCurrent
在接口Refreshable
- 返回:
- 如果此票证仍然有效,则返回true,否则返回false。
-
refresh
延长此票证的有效期。如果刷新操作成功,票证将包含一个新的会话密钥。如果票证不可续订或最新允许的续订时间已过,则刷新操作将失败。KDC返回任何其他错误也会导致此方法失败。注意:此方法与对象的访问器方法不同步。因此,调用者需要注意可能同时访问此对象并尝试同时续订它的多个线程。- 指定者:
-
refresh
在接口Refreshable
- 抛出:
-
IllegalStateException
- 如果此票证已销毁 -
RefreshFailedException
- 如果票证不可续订,或最新允许的续订时间已过,或KDC返回某些错误。 - 参见:
-
destroy
销毁票证并销毁其中存储的任何敏感信息。- 指定者:
-
destroy
在接口Destroyable
- 抛出:
-
DestroyFailedException
- 如果销毁操作失败。
-
isDestroyed
public boolean isDestroyed()确定此票证是否已销毁。- 指定者:
-
isDestroyed
在接口Destroyable
- 返回:
-
如果此
Object
已销毁,则返回true,否则返回false。
-
toString
返回此KerberosTicket
的信息性文本表示。 -
hashCode
public int hashCode()返回此KerberosTicket
的哈希码。 -
equals
将指定对象与此KerberosTicket
进行比较以确定是否相等。如果给定对象也是KerberosTicket
,并且两个KerberosTicket
实例是等效的,则返回true。销毁的KerberosTicket
对象仅等于自身。
-