- java.lang.Object
-
- javax.security.auth.kerberos.KeyTab
-
public final class KeyTab extends Object
这个类封装了一个keytab文件。从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。为应用程序被授予可能需要
PrivateCredentialPermission
是否需要访问KeyTab
从实例Subject
。 当应用程序依赖于默认的JGSS Kerberos机制来访问KeyTab
时,不需要此权限。 然而,在这种情况下,应用程序将需要适当的ServicePermission
。keytab文件格式描述于http://www.ioplex.com/utilities/keytab.txt 。
- 从以下版本开始:
- 1.7
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object other)
将指定的对象与此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()
返回此KeyTab
的内容丰富的文字表示。
-
-
-
方法详细信息
-
getInstance
public static KeyTab getInstance(File file)
从绑定到未知服务主体的File
对象返回KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与该文件相关联,并且不会读取它。当绑定的服务主体已知时,开发人员应调用
getInstance(KerberosPrincipal,File)
。- 参数
-
file
- keytabFile
对象,不能为空 - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果file
参数为空
-
getUnboundInstance
public static KeyTab getUnboundInstance(File file)
从File
对象返回未绑定的KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与该文件相关联,并且不会读取它。- 参数
-
file
- keytabFile
对象,不能为空 - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果文件参数为空 - 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance(KerberosPrincipal princ, File file)
从绑定到指定服务主体的File
对象返回一个KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与该文件相关联,并且不会读取它。- 参数
-
princ
- 绑定的服务主体不能为空 -
file
- keytabFile
对象,不能为空 - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果任一参数为空 - 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance()
返回与未知服务主体绑定的默认KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与默认的keytab文件相关联,并且不会读取它。当绑定的服务主体已知时,开发人员应调用
getInstance(KerberosPrincipal)
。- 结果
- 默认的keytab实例。
-
getUnboundInstance
public static KeyTab getUnboundInstance()
返回默认未绑定的KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与默认的keytab文件相关联,并且不会读取它。- 结果
- 默认的keytab实例
- 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance(KerberosPrincipal princ)
返回绑定到指定服务主体的默认KeyTab
实例。此方法的结果从不为null。 此方法仅将返回的
KeyTab
对象与默认的keytab文件相关联,并且不会读取它。- 参数
-
princ
- 绑定的服务主体不能为空 - 结果
- 默认的keytab实例
- 异常
-
NullPointerException
- 如果princ
为空 - 从以下版本开始:
- 1.8
-
getKeys
public KerberosKey[] getKeys(KerberosPrincipal principal)
返回给定Kerberos主体的新密钥。该方法的实现应该确保返回的密钥与keytab文件的最新内容相匹配。 结果是新创建的副本,可以由调用者修改,而无需修改keytab对象。 调用者应使用
destroy
结果键。请注意,在
KeyTab
对象被实例化并且其内容可能随时间变化之后,可以创建keytab文件。 因此,应用程序只有在需要使用密钥时才应该调用此方法。 先前调用的任何以前的结果可能会过期。如果在keytab文件的读取过程中出现任何错误(例如I / O错误或格式错误),则应返回保存的结果。 如果没有保存的结果(比如,这是调用此方法的第一次,或者所有以前的读取尝试失败),应该返回一个空数组。 这可以确保在keytab文件的(可能很慢)更新期间结果不会被彻底改变。
每次调用此方法并且文件的读取都不会异常(例如,I / O错误或文件格式错误),则应保存
principal
的结果。 如果方便,实现也可以为具有相同键盘对象中的键的其他主体保存键。从keytab读取的任何不受支持的密钥都被忽略,不包括在结果中。
如果此keytab绑定到特定的主体,则在另一个主体上调用此方法将返回一个空数组。
- 参数
-
principal
- Kerberos主体不能为空。 - 结果
- 键(从不为空,可能为空)
- 异常
-
NullPointerException
- 如果principal
参数为空 -
SecurityException
- 如果安全管理器存在,并且不允许对keytab文件的读取访问
-
exists
public boolean exists()
检查keytab文件是否存在。 该方法的实现应该确保结果符合keytab文件的最新状态。呼叫者可以使用结果来确定是否应该回退到另一种机制来读取密钥。
- 结果
- 如果keytab文件存在,则为true; 否则为假。
- 异常
-
SecurityException
- 如果安全管理器存在,并且不允许对keytab文件的读取访问
-
toString
public String toString()
返回此KeyTab
的内容丰富的文字表示。
-
hashCode
public int hashCode()
返回此KeyTab
的哈希码。- 重写:
-
hashCode
在Object
- 结果
-
这个
KeyTab
的哈希码。 - 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object other)
将指定的对象与此KeyTab
进行比较以获得相等性。 如果给定的对象也是一个KeyTab
,并且两个KeyTab
实例是等价的,则返回true。- 重写:
-
equals
在Object
- 参数
-
other
- 要比较的对象 - 结果
-
如果指定的对象等于这个
KeyTab
- 另请参见:
-
Object.hashCode()
,HashMap
-
getPrincipal
public KerberosPrincipal getPrincipal()
返回KeyTab
对象所绑定的服务主体。 如果没有绑定,则返回null
。请注意,弃用的构造函数创建一个
KeyTab
对象,绑定一些未知的主体。 在这种情况下,此方法也返回null。 用户可以拨打isBound()
来验证这种情况。- 结果
- 服务主体
- 从以下版本开始:
- 1.8
-
isBound
public boolean isBound()
如果keytab绑定到一个主体返回- 结果
- 如果keytab绑定到一个主体
- 从以下版本开始:
- 1.8
-
-