- 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)获得的,则它将绑定到特定的服务主体,并且只能由它使用。请注意,构造
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
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 booleanequals(Object other)将指定对象与此KeyTab进行相等性比较。booleanexists()检查keytab文件是否存在。static KeyTabgetInstance()返回绑定到未知服务主体的默认KeyTab实例。static KeyTabgetInstance(File file)从绑定到未知服务主体的File对象返回KeyTab实例。static KeyTabgetInstance(KerberosPrincipal princ)返回绑定到指定服务主体的默认KeyTab实例。static KeyTabgetInstance(KerberosPrincipal princ, File file)从绑定到指定服务主体的File对象返回KeyTab实例。KerberosKey[]getKeys(KerberosPrincipal principal)返回给定Kerberos主体的新密钥。KerberosPrincipalgetPrincipal()返回此KeyTab对象绑定的服务主体。static KeyTabgetUnboundInstance()返回默认的未绑定KeyTab实例。static KeyTabgetUnboundInstance(File file)从File对象返回未绑定的KeyTab实例。inthashCode()返回此KeyTab的哈希码。booleanisBound()如果keytab绑定到主体,则返回StringtoString()返回此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
-
-