- java.lang.Object
-
- javax.security.auth.kerberos.KeyTab
-
public final class KeyTabextends Object
此类封装了keytab文件。从keytab文件获取长期密钥的Kerberos JAAS登录模块应使用此类。 登录模块将在身份验证过程的提交阶段将此类的实例存储在
Subject
的私有凭据集中。如果
KeyTab
对象是从getUnboundInstance()
或getUnboundInstance(java.io.File)
获得的,则它是未绑定的,因此可以由任何服务主体使用。 否则,如果它是从getInstance(KerberosPrincipal)
或getInstance(KerberosPrincipal, java.io.File)
获得的,则它将绑定到特定的服务主体,并且只能由它使用。请注意,构造
getInstance()
和getInstance(java.io.File)
是当有未结合keytabs不支持创建。 不应再使用这些方法。 使用这些方法之一创建的对象被视为绑定到未知主体,这意味着,其isBound()
返回true,getPrincipal()
返回null。为应用程序被授予可能需要
PrivateCredentialPermission
如果需要访问KeyTab
从实例Subject
。 当应用程序依赖于默认的JGSS Kerberos机制来访问KeyTab
时,不需要此权限。 但是,在这种情况下,申请将需要适当的ServicePermission
。密钥表文件格式在http://www.ioplex.com/utilities/keytab.txt中描述。
- 从以下版本开始:
- 1.7
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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
的信息性文本表示KeyTab
。
-
-
-
方法详细信息
-
getInstance
public static KeyTab getInstance(File file)
从绑定到未知服务主体的File
对象返回KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与文件关联,并且不读取它。当已知绑定服务主体时,开发人员应致电
getInstance(KerberosPrincipal,File)
。- 参数
-
file
- keytabFile
对象,不得为null - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果file
参数为null
-
getUnboundInstance
public static KeyTab getUnboundInstance(File file)
从File
对象返回未绑定的KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与文件关联,并且不读取它。- 参数
-
file
- keytabFile
对象,不能为null - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果file参数为null - 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance(KerberosPrincipal princ, File file)
从绑定到指定服务主体的File
对象返回KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与文件关联,并且不读取它。- 参数
-
princ
- 绑定的服务主体,不能为null -
file
- keytabFile
对象,不得为null - 结果
- keytab实例
- 异常
-
NullPointerException
- 如果其中一个参数为null - 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance()
返回绑定到未知服务主体的默认KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与默认密钥表文件关联,并且不读取它。当绑定服务主体已知时,开发人员应致电
getInstance(KerberosPrincipal)
。- 结果
- 默认的keytab实例。
-
getUnboundInstance
public static KeyTab getUnboundInstance()
返回默认的未绑定KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与默认密钥表文件关联,并且不读取它。- 结果
- 默认的keytab实例
- 从以下版本开始:
- 1.8
-
getInstance
public static KeyTab getInstance(KerberosPrincipal princ)
返回绑定到指定服务主体的默认KeyTab
实例。此方法的结果永远不会为null。 此方法仅将返回的
KeyTab
对象与默认密钥表文件关联,并且不读取它。- 参数
-
princ
- 绑定的服务主体,不能为null - 结果
- 默认的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读取的任何不受支持的密钥都将被忽略,并且不包含在结果中。
如果此keytab绑定到特定主体,则在另一个主体上调用此方法将返回一个空数组。
- 参数
-
principal
- Kerberos主体,不能为空。 - 结果
- 键(永远不会为空,可能为空)
- 异常
-
NullPointerException
- 如果principal
参数为null -
SecurityException
- 如果存在安全管理器,则不允许对keytab文件进行读访问
-
exists
public boolean exists()
检查keytab文件是否存在。 此方法的实现应确保结果与keytab文件的最新状态匹配。调用者可以使用结果来确定它是否应该回退到另一种机制来读取密钥。
- 结果
- 如果keytab文件存在,则为true; 否则是假的。
- 异常
-
SecurityException
- 如果存在安全管理器,则不允许对keytab文件进行读访问
-
toString
public String toString()
返回此KeyTab
的信息性文本表示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
-
-