将 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);
     }