- 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 方法 描述 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的内容丰富的文字表示。
-
-
-
方法详细信息
-
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
-
-