一个从keytab文件获取长期密钥的Kerberos JAAS登录模块应该使用这个类。在认证过程的提交阶段,登录模块将在Subject的私有凭证集中存储这个类的实例。
如果从getUnboundInstance()或getUnboundInstance(java.io.File)获取了一个KeyTab对象,它是未绑定的,因此可以被任何服务主体使用。否则,如果从getInstance(KerberosPrincipal)或getInstance(KerberosPrincipal, java.io.File)获取,它将绑定到特定的服务主体,并且只能被它使用。
请注意,当没有支持未绑定keytab时,构造函数getInstance()和getInstance(java.io.File)被创建。这些方法不应再被使用。使用这些方法创建的对象被视为绑定到未知主体,这意味着它的isBound()返回true,getPrincipal()返回null。
如果应用程序需要从Subject访问KeyTab实例,则可能需要被授予PrivateCredentialPermission。当应用程序依赖于默认的JGSS Kerberos机制访问KeyTab时,不需要此权限。在这种情况下,应用程序将需要适当的ServicePermission。
keytab文件格式在 http://www.ioplex.com/utilities/keytab.txt中描述。
- 自版本:
- 1.7
-
Method Summary
Modifier and TypeMethodDescriptionboolean将指定的对象与此KeyTab进行比较,以确定它们是否相等。booleanexists()检查keytab文件是否存在。static KeyTab返回绑定到未知服务主体的默认KeyTab实例。static KeyTabgetInstance(File file) 返回绑定到未知服务主体的File对象的KeyTab实例。static KeyTabgetInstance(KerberosPrincipal princ) 返回绑定到指定服务主体的默认KeyTab实例。static KeyTabgetInstance(KerberosPrincipal princ, File file) 返回绑定到指定服务主体的File对象的KeyTab实例。getKeys(KerberosPrincipal principal) 为给定的Kerberos主体返回新的密钥。返回此KeyTab对象绑定到的服务主体。static KeyTab返回默认的未绑定KeyTab实例。static KeyTabgetUnboundInstance(File file) 返回从File对象获取的未绑定KeyTab实例。inthashCode()返回此KeyTab的哈希码。booleanisBound()返回keytab是否绑定到主体。toString()返回此KeyTab的信息性文本表示。
-
Method Details
-
getInstance
返回绑定到未知服务主体的File对象的KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与文件关联,而不读取它。当已知绑定服务主体时,开发人员应调用
getInstance(KerberosPrincipal,File)。- 参数:
-
file- keytabFile对象,不得为null - 返回:
- keytab实例
- 抛出:
-
NullPointerException- 如果file参数为null
-
getUnboundInstance
返回从File对象获取的未绑定KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与文件关联,而不读取它。- 参数:
-
file- keytabFile对象,不得为null - 返回:
- keytab实例
- 抛出:
-
NullPointerException- 如果文件参数为null - 自版本:
- 1.8
-
getInstance
返回从File对象获取的绑定到指定服务主体的KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与文件关联,而不读取它。- 参数:
-
princ- 绑定的服务主体,不得为null -
file- keytabFile对象,不得为null - 返回:
- keytab实例
- 抛出:
-
NullPointerException- 如果任一参数为null - 自版本:
- 1.8
-
getInstance
返回绑定到未知服务主体的默认KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与默认keytab文件关联,而不读取它。当已知绑定服务主体时,开发人员应调用
getInstance(KerberosPrincipal)。- 返回:
- 默认keytab实例。
-
getUnboundInstance
返回默认的未绑定KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与默认keytab文件关联,而不读取它。- 返回:
- 默认keytab实例
- 自版本:
- 1.8
-
getInstance
返回绑定到指定服务主体的默认KeyTab实例。此方法的结果永远不会为null。此方法仅将返回的
KeyTab对象与默认keytab文件关联,而不读取它。- 参数:
-
princ- 绑定的服务主体,不得为null - 返回:
- 默认keytab实例
- 抛出:
-
NullPointerException- 如果princ为null - 自版本:
- 1.8
-
getKeys
为给定的Kerberos主体返回新的密钥。此方法的实现应确保返回的密钥与keytab文件的最新内容匹配。结果是一个新创建的副本,可以由调用者修改而不修改keytab对象。调用者在使用完密钥后应该销毁结果密钥。
请注意,keytab文件可以在实例化
KeyTab对象后创建,并且其内容可能随时间而变化。因此,应用程序只在需要使用密钥时才调用此方法。任何先前调用的结果可能会过期。如果在读取keytab文件的过程中出现任何错误(例如I/O错误或格式错误),应返回保存的结果。如果没有保存的结果(例如,这是第一次调用此方法,或者所有先前的读取尝试失败),则应返回一个空数组。这可以确保结果在keytab文件的(可能很慢的)更新期间不会发生 drastical 变化。
每次调用此方法并且文件读取成功且没有异常(例如I/O错误或文件格式错误)时,应为
principal保存结果。实现还可以为其他在同一keytab对象中具有密钥的主体保存密钥,如果方便的话。从keytab中读取的任何不受支持的密钥将被忽略并不包含在结果中。
如果此keytab绑定到特定主体,则在另一个主体上调用此方法将返回一个空数组。
- 参数:
-
principal- Kerberos主体,不得为null。 - 返回:
- 密钥(永不为null,可能为空)
- 抛出:
-
NullPointerException- 如果principal参数为null -
SecurityException- 如果存在安全管理器且不允许对keytab文件的读取访问
-
exists
public boolean exists()检查keytab文件是否存在。此方法的实现应确保结果与keytab文件的最新状态匹配。- 返回:
- 如果keytab文件存在,则为true;否则为false。
- 抛出:
-
SecurityException- 如果存在安全管理器且不允许对keytab文件的读取访问
-
toString
返回此KeyTab的信息性文本表示。 -
hashCode
public int hashCode()返回此KeyTab的哈希码。 -
equals
将指定的对象与这个KeyTab进行比较以确定是否相等。如果给定的对象也是一个KeyTab并且两个KeyTab实例是等价的,则返回true。 -
getPrincipal
返回这个KeyTab对象绑定的服务主体。如果未绑定,则返回null。请注意,已弃用的构造函数创建一个绑定到某个未知主体的
KeyTab对象。在这种情况下,此方法也会返回null。用户可以调用isBound()来验证这种情况。- 返回:
- 服务主体
- 自:
- 1.8
-
isBound
public boolean isBound()返回keytab是否绑定到一个主体- 返回:
- 如果keytab绑定到一个主体
- 自:
- 1.8
-