public final class KeyTab extends Object
从keytab文件获取长期密钥的Kerberos JAAS登录模块应该使用此类。 登录模块将在验证过程的提交阶段将该类的实例存储在Subject
的私有凭证集中。
如果KeyTab
对象从getUnboundInstance()
或getUnboundInstance(java.io.File)
获得,则它是未绑定的,因此可以由任何服务主体使用。 否则,如果从getInstance(KerberosPrincipal)
或getInstance(KerberosPrincipal, java.io.File)
获得,则绑定到特定服务主体,只能由其使用。
请注意,当不支持未绑定的keytab 时 , 构建器getInstance()
和getInstance(java.io.File)
已创建。 这些方法不应该被使用了。 使用这些方法之一创建的对象被认为绑定到一个未知的主体,这意味着它的isBound()
返回true,而getPrincipal()
返回null。
如果应用程序需要从主题访问KeyTab实例,可能需要授予应用程序PrivateCredentialPermission
。 当应用程序依赖于默认的JGSS Kerberos机制来访问KeyTab时,不需要此权限。 然而,在这种情况下,应用程序将需要适当的ServicePermission
。
keytab文件格式描述于http://www.ioplex.com/utilities/keytab.txt 。
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object other)
将指定的Object与此KeyTab进行比较以获得相等性。
|
boolean |
exists()
检查keytab文件是否存在。
|
static KeyTab |
getInstance()
返回绑定到未知服务主体的默认的
KeyTab 实例。
|
static KeyTab |
getInstance(File file)
从绑定到未知服务主体的
File 对象返回
KeyTab 实例。
|
static KeyTab |
getInstance(KerberosPrincipal princ)
返回绑定到指定的服务主体的默认的
KeyTab 实例。
|
static KeyTab |
getInstance(KerberosPrincipal princ, File file)
从绑定到指定的服务主体的
File 对象返回一个
KeyTab 实例。
|
KerberosKey[] |
getKeys(KerberosPrincipal principal)
返回给定Kerberos主体的新密钥。
|
KerberosPrincipal |
getPrincipal()
返回这个
KeyTab 对象所绑定的服务主体。
|
static KeyTab |
getUnboundInstance()
返回默认未绑定的
KeyTab 实例。
|
static KeyTab |
getUnboundInstance(File file)
从
File 对象返回未绑定的
KeyTab 实例。
|
int |
hashCode()
返回此KeyTab的哈希码。
|
boolean |
isBound()
如果keytab绑定到一个主体返回
|
String |
toString()
返回对象的字符串表示形式。
|
public static KeyTab getInstance(File file)
File
对象返回KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与该文件相关联,并且不会读取它。
当绑定的服务主体已知时,开发人员应调用getInstance(KerberosPrincipal,File)
。
file
- keytab
File
对象,不能为空
NullPointerException
- 如果
file
参数为空
public static KeyTab getUnboundInstance(File file)
File
对象返回未绑定的KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与文件相关联,并且不会读取它。
file
- keytab
File
对象,不能为空
NullPointerException
- 如果文件参数为空
public static KeyTab getInstance(KerberosPrincipal princ, File file)
File
对象返回KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与该文件相关联,并且不会读取它。
princ
- 绑定的服务主体,不能为null
file
- keytab
File
对象,不能为空
NullPointerException
- 如果任一参数为空
public static KeyTab getInstance()
KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与默认的keytab文件相关联,并且不会读取它。
当绑定的服务主体已知时,开发人员应调用getInstance(KerberosPrincipal)
。
public static KeyTab getUnboundInstance()
KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与默认的keytab文件相关联,并且不会读取它。
public static KeyTab getInstance(KerberosPrincipal princ)
KeyTab
实例。
此方法的结果从不为null。 此方法仅将返回的KeyTab
对象与默认的keytab文件相关联,并且不会读取它。
princ
- 绑定的服务主体,不能为null
NullPointerException
- 如果
princ
为空
public KerberosKey[] getKeys(KerberosPrincipal principal)
该方法的实现应该确保返回的密钥与keytab文件的最新内容相匹配。 结果是新创建的副本,可以由调用者修改,而无需修改keytab对象。 调用者应该使用结果键后,使用destroy
。
请注意,keytab文件可以在KeyTab
对象实例化后创建,并且其内容可能会随时间而变化。 因此,应用程序只有在需要使用密钥时才应该调用此方法。 先前调用的任何以前的结果可能会过期。
如果在KeyTab文件的读取过程中出现任何错误(例如I / O错误或格式错误),则应返回保存的结果。 如果没有保存的结果(比如,这是调用此方法的第一次,或者所有以前的读取尝试失败),应该返回一个空数组。 这可以确保在keytab文件的(可能很慢)更新期间结果不会被彻底改变。
每次调用此方法并且文件的读取不会异常(例如,I / O错误或文件格式错误),则应保存结果为principal
。 如果方便,实现也可以为具有相同键盘对象中的键的其他主体保存键。
从keytab读取的任何不受支持的密钥都被忽略,不包括在结果中。
如果此keytab绑定到特定的主体,则在另一个主体上调用此方法将返回一个空数组。
principal
- Kerberos主体不能为null。
NullPointerException
- 如果
principal
参数为空
SecurityException
- 如果安全管理器存在,并且不允许对keytab文件的读取访问
public boolean exists()
呼叫者可以使用结果来确定是否应该回退到另一种机制来读取密钥。
SecurityException
- 如果存在安全管理员,并且不允许对keytab文件的读取访问
public String toString()
Object
toString
方法返回一个“textually代表”这个对象的字符串。
结果应该是一个简明扼要的表达,容易让人阅读。
建议所有子类覆盖此方法。
该toString
类方法Object
返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@
”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
public int hashCode()
hashCode
在类别
Object
KeyTab
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object other)
KeyTab
,并且两个KeyTab
实例是等价的,则返回true。
equals
在类别
Object
other
- 要比较的对象
Object.hashCode()
, HashMap
public KerberosPrincipal getPrincipal()
KeyTab
对象所绑定的服务主体。
如果没有绑定,则返回null
。
请注意,弃用的构造函数创建一个绑定到一些未知主体的KeyTab对象。 在这种情况下,此方法也返回null。 用户可以致电isBound()
来验证这种情况。
public boolean isBound()