定制应用程序登录以使用 JAAS 来执行身份断言
可以使用 Java™ 认证和授权服务 (JAAS) 登录框架来创建 JAAS 登录配置,可以使用此 JAAS 登录配置来登录 Liberty 上的身份断言。
关于此任务
通过使用信任验证来配置身份断言,应用程序可以使用 JAAS 登录配置来执行程序化身份断言。有关更多详细信息,请参阅 IdentityAssertionLoginModule。
过程
- 将信任验证委托给用户实现的插入点。 由定制登录模块完成信任验证。此定制登录模块执行任何所需的信任验证,然后设置共享状态下要传递到身份断言登录模块的信任和身份信息。下列共享状态键中需要映射:
如果缺少状态,那么 IdentityAssertionLoginModule 类会报告 WSLoginFailedException 问题。com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
共享状态键中的映射必须包含具有下列键名称的信任密钥:
如果此键设为 true,那么建立信任。如果此键设置为 false,那么不会建立任何信任,并且 IdentityAssertionLoginModule 类会创建 WSLoginFailedException 问题。com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
共享状态键中的映射也必须设置下列其中一个资源:
- 身份键。可以在下列键中设置 java.security.Principal:
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.principal
- java.security.cert.X509Certificate[]。可以在下列键中设置此证书:
com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certficates
- 身份键。可以在下列键中设置 java.security.Principal:
- 为应用程序登录创建 JAAS 配置。 JAAS 配置将包含用户实现的信任验证定制登录模块和 IdentityAssertionLoginModule 类。然后,要设置应用程序登录配置,请在 server.xml 文件中配置下列代码:
应用程序将使用此 JAAS 配置来执行身份断言。<jaasLoginContextEntry id="CustomIdentityAssertion" name="CustomIdentityAssertion" loginModuleRef="customIdentityAssertion,identityAssertion" /> <jaasLoginModule id="customIdentityAssertion" className="com.ibm.ws.security.authentication.IdentityAssertionLoginModule" controlFlag="REQUIRED" libraryRef="customLoginLib"/> <library id="customLoginLib"> <fileset dir="${server.config.dir}" includes="IdentityAssertionLoginModule.jar"/> </library>
- 执行可编程身份断言。 现在,程序可以使用 JAAS 登录配置来执行程序化身份断言。应用程序可为步骤 2 中所创建的 JAAS 配置创建登录上下文,然后使用将断言的身份来登录该登录上下文。如果登录成功,就会在当前运行进程中设置该身份。以下示例说明了此过程:
NameCallback handler = new NameCallback(new MyPrincipal("Joe")); LoginContext lc = new LoginContext("customIdentityAssertion", handler); lc.login(); //assume successful Subject s = lc.getSubject(); WSSubject.setRunAsSubject(s); // From here on , the runas identity is "Joe"
注: MyPrincipal 类是示例中 java.security.Principal 接口的实现。
结果

文件名:twlp_dev_custom_idassertion.html