- java.lang.Object
-
- javax.security.auth.kerberos.KerberosKey
-
- All Implemented Interfaces:
-
Serializable
,Key
,SecretKey
,Destroyable
public class KerberosKey extends Object implements SecretKey
该类封装了Kerberos主体的长期密钥。A
KerberosKey
对象包括EncryptionKey,作为其所有者的KerberosPrincipal
和密钥的版本号。EncryptionKey在Kerberos协议规范( RFC 4120 )的第4.2.9节中定义为:
EncryptionKey ::= SEQUENCE { keytype [0] Int32 -- actually encryption type --, keyvalue [1] OCTET STRING }
KerberosKey
的关键材料定义为上述keyValue
的值。获取主体密码并从中生成密钥的所有Kerberos JAAS登录模块都应该使用此类。 有时,例如在没有用户到用户身份验证的情况下验证服务器时,登录模块将在认证过程的提交阶段将该类的实例存储在
Subject
的私有凭证集中。使用keytab读取密钥的Kerberos服务应使用
KeyTab
类,当需要时可以读取最新的密钥。为应用程序被授予可能需要
PrivateCredentialPermission
是否需要访问KerberosKey
从Subject实例。 当应用程序依赖于默认的JGSS Kerberos机制来访问KerberosKey
时,不需要此权限。 但是在这种情况下,应用程序将需要适当的ServicePermission
。当使用
KerberosKey(KerberosPrincipal, char[], String)
构造函数创建KerberosKey
,实现可能会接受非IANA算法名称(例如,“rc4-hmac”的“ArcFourMac”),但是getAlgorithm()
方法必须始终返回IANA算法名称。- Implementation Note:
- 由于兼容性原因,在此实现中的 2707774665707构造函数中支持JDK 9之前使用的旧算法名称,“des-cbc-md5”,“des3-cbc-sha1-kd的”DESede“为”DES“(和null) “,”ac12-cts-hmac-sha1-96“的”AES128“,”aes256-cts-hmac-sha1-96“的AES256”,“rc4-hmac”的“ArcFourHmac”
- 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 KerberosKey(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
构造一个KerberosKey
从给定的字节当密钥类型和密钥版本号是已知的。KerberosKey(KerberosPrincipal principal, char[] password, String algorithm)
使用指定的算法名称从主体的密码构造一个KerberosKey
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
destroy()
清除此密钥的密钥材料即可销毁此密钥。boolean
equals(Object other)
将指定的对象与此KerberosKey
进行比较以获得相等性。String
getAlgorithm()
返回此键的标准算法名称。byte[]
getEncoded()
返回此密钥的密钥材料。String
getFormat()
返回此密钥的编码格式的名称。int
getKeyType()
返回此长期密钥的密钥类型。KerberosPrincipal
getPrincipal()
返回此密钥所属的主体。int
getVersionNumber()
返回密钥版本号。int
hashCode()
返回此KerberosKey
的哈希码。boolean
isDestroyed()
确定此密钥是否已被销毁。String
toString()
返回此KerberosKey
的内容丰富的文字表示。
-
-
-
构造方法详细信息
-
KerberosKey
public KerberosKey(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
当键值和密钥版本号已知时,从给定字节构造一个KerberosKey
。 当从Kerberos“keytab”读取密钥信息时,可以使用它。- 参数
-
principal
- 该密钥属于的主体 -
keyBytes
- 密钥的关键材料 -
keyType
- 由Kerberos协议规范定义的密钥的密钥类型。 -
versionNum
- 此密钥的版本号
-
KerberosKey
public KerberosKey(KerberosPrincipal principal, char[] password, String algorithm)
使用指定的算法名称从主体的密码构造KerberosKey
。 算法名称(不区分大小写)应作为IANA Kerberos Encryption Type Numbers页面上定义的加密类型字符串提供。 生成的密钥的版本号将为0。- 参数
-
principal
- 此密码所属的主体 -
password
- 应用于计算密钥的密码 -
algorithm
- 此密钥将被用于的算法的名称 - 异常
-
IllegalArgumentException
- 如果传递的算法的名称不受支持。
-
-
方法详细信息
-
getPrincipal
public final KerberosPrincipal getPrincipal()
返回此密钥所属的主体。- 结果
- 这个钥匙所属的校长。
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
getVersionNumber
public final int getVersionNumber()
返回密钥版本号。- 结果
- 关键版本号。
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
getKeyType
public final int getKeyType()
返回此长期密钥的密钥类型。- 结果
- 关键类型。
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
getAlgorithm
public final String getAlgorithm()
返回此键的标准算法名称。 算法名称是IANA Kerberos Encryption Type Numbers页面上定义的加密类型字符串。此方法可以返回IANA页面上未定义的以下值:
- 无:对于etype等于0
- 未知:对于etype大于0但不支持实现
- private:对于小于0的etype
- Specified by:
-
getAlgorithm
在接口Key
- 结果
- 与该密钥相关联的算法的名称。
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
getFormat
public final String getFormat()
返回此密钥的编码格式的名称。- Specified by:
-
getFormat
接口Key
- 结果
- 字符串“RAW”
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
getEncoded
public final byte[] getEncoded()
返回此密钥的密钥材料。- Specified by:
-
getEncoded
在接口Key
- 结果
- 关键材料
- 异常
-
IllegalStateException
- 如果密钥被销毁
-
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()
返回此KerberosKey
的内容丰富的文字表示。
-
hashCode
public int hashCode()
返回此KerberosKey
的哈希码。- 重写:
-
hashCode
在Object
- 结果
-
这个
KerberosKey
的哈希码。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object other)
将指定的对象与此KerberosKey
进行比较以获得相等性。 如果给定对象也是KerberosKey
,并且两个KerberosKey
实例是等价的,则返回true。 一个销毁的KerberosKey
对象只等于自己。- 重写:
-
equals
中的Object
- 参数
-
other
- 要比较的对象 - 结果
-
如果指定的对象等于这个
KerberosKey
,KerberosKey
true,否则为false。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.hashCode()
,HashMap
-
-