将 JAAS 与 JGSS 应用程序配合使用
IBM® JGSS 包含可选的 JAAS 登录工具,该工具允许应用程序使用 JAAS 来获取凭证。 在 JAAS 登录工具将主体凭证和密钥保存在 JAAS 登录上下文的主体对象中之后, JGSS 可以从该主体集检索凭证。
JGSS 的缺省行为是从主题中检索凭证和密钥。 您可以通过将 Java™ 属性 javax.security.auth.useSubjectCredsOnly 设置为 false 来禁用此功能。
注: 虽然纯 Java JGSS 提供程序可以使用登录接口,但本机 IBM i JGSS 提供程序无法使用。
有关 JAAS 功能的更多信息,请参阅 获取 Kerberos 凭证和创建密钥。
要使用 JAAS 登录工具,应用程序必须通过以下方式遵循 JAAS 编程模型:
- 创建 JAAS 登录上下文
- 在 JAAS Subject.doAs 构造的范围内操作
以下代码片段说明了在 JAAS Subject.doAs 构造的范围内操作的概念:
static class JGSSOperations implements PrivilegedExceptionAction {
public JGSSOperations() {}
public Object run () throws GSSException {
// JGSS application code goes/runs here
}
}
public static void main(String args[]) throws Exception {
// Create a login context that will use the Kerberos
// callback handler
// com.ibm.security.auth.callback.Krb5CallbackHandler
// There must be a JAAS configuration for "JGSSClient"
LoginContext loginContext =
new LoginContext("JGSSClient", new Krb5CallabackHandler());
loginContext.login();
// Run the entire JGSS application in JAAS privileged mode
Subject.doAsPrivileged(loginContext.getSubject(),
new JGSSOperations(), null);
}