- java.lang.Object
-
- javax.security.auth.kerberos.KerberosKey
-
- 实现的所有接口
-
Serializable
,Key
,SecretKey
,Destroyable
public class KerberosKey extends Object implements SecretKey
此类封装了Kerberos主体的长期密钥。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
的私有凭据集中。使用密钥表读取密钥的Kerberos服务应使用
KeyTab
类,其中可在需要时读取最新密钥。如果需要从Subject访问
KerberosKey
实例,则可能需要为应用程序授予PrivateCredentialPermission
。 当应用程序依赖于默认的JGSS Kerberos机制来访问KerberosKey
时,不需要此权限。 但是,在这种情况下,应用程序将需要适当的ServicePermission
。使用
KerberosKey(KerberosPrincipal, char[], String)
构造函数创建KerberosKey
,实现可以接受非IANA算法名称(例如,“rc4-hmac”的“ArcFourMac”),但getAlgorithm()
方法必须始终返回IANA算法名称。- Implementation Note:
-
出于兼容性原因,在此实现中的
KerberosKey(KerberosPrincipal, char[], String)
构造函数中支持在JDK 9之前使用的旧算法名称,对于“des-cbc-md5”为“DES”(和null),对于“des3-cbc-sha1-kd”为“DESede” “,”ArcFourHmac“表示”rc4-hmac“,”AES128“表示”aes128-cts-hmac-sha1-96“,”AES256“表示”aes256-cts-hmac-sha1-96“。 - 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 KerberosKey(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
当密钥类型和密钥版本号已知时,根据给定的字节构造KerberosKey
。KerberosKey(KerberosPrincipal principal, char[] password, String algorithm)
使用指定的算法名称从主体密码构造KerberosKey
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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
。
-
-
-
构造方法详细信息
-
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页面上未定义的以下值:
- none:对于etype等于0
- unknown:对于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
in interfaceDestroyable
- 结果
-
如果此
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
,则返回true,否则KerberosKey
false。 - 从以下版本开始:
- 1.6
- 另请参见:
-
Object.hashCode()
,HashMap
-
-