javax.security.auth.kerberos

java.lang.Object
  继承者 javax.security.auth.kerberos.KerberosTicket
所有已实现的接口:
Serializable, Destroyable, Refreshable

public class KerberosTicket
     
extends Object
implements Destroyable, Refreshable, Serializable

此类封装了 Kerberos 票据和从客户端的视点所观察到的有关信息。它捕获 Key Distribution Center (KDC) 发送给客端的所有信息,这些信息定义在 Kerberos 协议规范(RFC 1510) 中的应答消息 KDC-REP 中。

向 KDC 验证用户的所有 Kerberos JAAS 登录模块都应该使用此类。在可以使用的地方,登录模块甚至可以从操作系统的票据缓存中读取此信息,而不是直接与 KDC 通信。在 JAAS 验证过程的提交阶段,JAAS 登录模块应该实例化此类并将该实例存储在 Subject 的私有证书集中。

如果应用程序需要从 Subject 访问 KerberosTicket 实例,可能必须授予应用程序 PrivateCredentialPermission 权限。当应用程序依靠默认的 JGSS Kerberos 机制去访问 KerberosTicket 时,不需要此权限。但在这种情况下,应用程序将需要适当的 ServicePermission 权限。

注意此类适用于票据授权票据和其他的规则服务票据。票据授权票据就是更一般化的服务票据的特殊情况。

从以下版本开始:
1.4
另请参见:
Subject, PrivateCredentialPermission, LoginContext, GSSCredential, GSSManager, 序列化表格

构造方法摘要
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)
          比较给定 Object 与此 KerberosTicket 的相等性。
 Date getAuthTime()
          返回客户端进行验证的时间。
 KerberosPrincipal getClient()
          返回与此票据有关联的客户端主体。
 InetAddress[] getClientAddresses()
          返回可从其所指位置使用票据的地址列表。
 byte[] getEncoded()
          返回整个票据的 ASN.1 编码。
 Date getEndTime()
          返回此票据有效期的期满时间。
 boolean[] getFlags()
          返回与此票据有关联的标志。
 Date getRenewTill()
          返回此票据最新的期满时间,包括所有的更新。
 KerberosPrincipal getServer()
          返回与此票据有关联的服务主体。
 SecretKey getSessionKey()
          返回与此票据有关联的会话密钥。
 int getSessionKeyType()
          返回与此票据有关联的会话密钥的密钥类型(由 Kerberos Protocol Specification 定义)。
 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()
          返回该对象的字符串表示。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

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 协议规范定义的票据的 ASN.1 编码
client - 拥有此服务票据的客户端
server - 适用此票据的服务
sessionKey - 必须用来加密将要发送给服务器的授权者的会话密钥的原始字节
keyType - Kerberos 协议规范定义的会话密钥的密钥类型。
flags - 票据标志。此数组中的每个元素指示表示票据标志的 ASN.1 BitString 中的相应位值。如果此数组中的元素的数量小于 Kerberos 协议使用的标志的数量,则将丢失的标记填充为 false。
authTime - 客户端的初始验证时间
startTime - 经过这段时间后票据将生效。将 authTime 的值视为 startTime 时,此值可以为 null。
endTime - 经过这段时间后票据将不再有效
renewTill - 票据的绝对过期时间,包括所有可能的更新。对于不可更新的票据,此字段可以为 null。
clientAddresses - 客户端可以在其所指的位置使用票据的地址。如果票据在任何地址都是可用的,则此字段可以为 null。
方法详细信息

getClient

public final KerberosPrincipal getClient()
返回与此票据有关联的客户端主体。

返回:
客户端主体。

getServer

public final KerberosPrincipal getServer()
返回与此票据有关联的服务主体。

返回:
服务主体。

getSessionKey

public final SecretKey getSessionKey()
返回与此票据有关联的会话密钥。

返回:
会话密钥。

getSessionKeyType

public final int getSessionKeyType()
返回与此票据有关联的会话密钥的密钥类型(由 Kerberos Protocol Specification 定义)。

返回:
与此票据关联的会话密钥的密钥类型。
另请参见:
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 中的相应位值。

返回:
与此票据有关联的标志。

getAuthTime

public final Date getAuthTime()
返回客户端进行验证的时间。

返回:
对客户端进行验证的时间;如果未设置,则返回 null。

getStartTime

public final Date getStartTime()
返回此票据有效期的开始时间。

返回:
此票据有效期的开始时间;如果未设置,则返回 null。

getEndTime

public final Date getEndTime()
返回此票据有效期的期满时间。

返回:
此票据有效期的期满时间。

getRenewTill

public final Date getRenewTill()
返回此票据最新的期满时间,包括所有的更新。对于不可更新的票据将返回 null 值。

返回:
此票据最新的期满时间。

getClientAddresses

public final InetAddress[] getClientAddresses()
返回可从其所指位置使用票据的地址列表。

返回:
地址列表,如果没有提供此字段,则返回 null。

getEncoded

public final byte[] getEncoded()
返回整个票据的 ASN.1 编码。

返回:
整个票据的 ASN.1 编码。

isCurrent

public boolean isCurrent()
确定此票据是否仍旧是当前的。

指定者:
接口 Refreshable 中的 isCurrent
返回:
如果此 Object 是当前的,则返回 true;否则,返回 false。

refresh

public void refresh()
             throws RefreshFailedException
延长此票据的有效期。如果刷新操作成功,则票据将包含一个新的会话密钥。如果票据是不可更新的或已经超出最新允许更新时间,则刷新操作将失败。任何由 KDC 返回的其他错误都将导致此方法失败。 注:此方法与此对象的 accessor 方法不是同步的。因此调用者需要意识到有多个线程可能访问此方法并试图在同一时间更新它。

指定者:
接口 Refreshable 中的 refresh
抛出:
RefreshFailedException - 如果票据是不可更新的,或已经超过了最新允许更新时间,抑或 KDC 返回了某些错误。
另请参见:
isRenewable(), getRenewTill()

destroy

public void destroy()
             throws DestroyFailedException
销毁票据和存储在其中的敏感信息。

指定者:
接口 Destroyable 中的 destroy
抛出:
DestroyFailedException - 如果销毁操作失败。


isDestroyed

public boolean isDestroyed()
确定是否已经销毁此票据。

指定者:
接口 Destroyable 中的 isDestroyed
返回:
如果此 Object 已经销毁,则返回 true;否则,返回 false。

toString

public String toString()
从类 Object 复制的描述
返回该对象的字符串表示。通常, toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())
 

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。

hashCode

public int hashCode()
返回此 KerberosTicket 的哈希码。

覆盖:
Object 中的 hashCode
返回:
KerberosTicket 的 hashCode()
从以下版本开始:
1.6
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object other)
比较给定 Object 与此 KerberosTicket 的相等性。如果给定对象也是 KerberosTicket 并且两个 KerberosTicket 相等,则返回 true。

覆盖:
Object 中的 equals
参数:
other - 要比较的 Object
返回:
如果指定对象等于此 KerberosTicket,则返回 true;否则返回 false。注:如果其中一个 KerberosTicket 已经销毁,则返回 false。
从以下版本开始:
1.6
另请参见:
Object.hashCode(), Hashtable