开发您自已的 J2C 主体映射模块
当将 Java 2 Connector(J2C)连接生成器配置为执行容器管理的注册时,WebSphere Application Server 提供了主体映射。例如,应用程序服务器可以将调用者主体映射至资源主体以便打开与后端服务器的新连接。借助容器管理的注册,WebSphere Application Server 创建包含 EIS 安全域凭证的主体实例。主体映射模块返回的主体对象包含用于表示调用者标识的主体对象和 PasswordCredential 或 GenericCredential。WebSphere Application Server 提供了一个缺省主体映射模块,此模块将任何经过认证的用户凭证映射至 EIS 安全域的密码凭证。缺省映射模块是在“应用程序登录配置”面板中的 DefaultPrincipalMapping 项中定义的。EIS 安全域的用户标识和密码是在每个连接生成器之下由管理控制台中的 authDataAlias 属性容器管理的认证别名定义的。authDataAlias 属性并不实际地包含用户名和密码。authDataAlias 属性包含一个别名,此别名引用安全性配置文档中定义的用户名和密码对。由于包含敏感数据,所以安全性配置文档要求使用具有最高特权的管理员角色来进行读写 访问。这种间接性可以避免将敏感的用户名和密码保存在除安全性文档之外的配置文档中。
“J2C 连接生成器”配置包含一个映射模块,此模块定义主体映射模块别名(mappingConfigAlias 属性)和认证数据别名(authDataAlias 属性)。在运行时,J2C 管理的连接生成器代码通过 WSPrincipalMappingCallbackHandler 对象将对 ManagedConnectionFactory 的引用和一个 authDataAlias 对象传送给已配置的主体映射模块。如果缺省主体映射模块提供的“任何经过认证的用户凭证到一个别名”映射不足够,则 WebSphere Application Server 允许用户为连接生成器插入定制主体映射模块。定制映射模块是特殊用途的 JAAS LoginModule,它在 login 方法中执行主体或凭证映射。可使用 WSSubject.getCallerPrincipal() 方法来检索应用程序客户机标识。插入定制映射模块的操作非常简单。只需将 mappingConfigAlias 的值更改为定制映射模块。然而,不能通过管理控制台撤销配置,而必须通过 wsadmin 脚本编制工具完成此操作。
执行下列步骤来配置定制映射模块。使用 WebSphere 管理控制台来执行前几个步骤。使用 wsadmin 管理工具来执行其余配置。有关 wsadmin 的更多信息,参见管理主题中的。
启动管理控制台。要为应用程序服务器添加定制映射模块,请单击服务器 --> 应用程序服务器。单击服务器的名称。
单击安全性 --> JAAS 配置。
选择 JAAS 配置和应用程序登录。单击新建。
为新的映射模块输入唯一的别名,并单击应用。
单击 JAAS 登录模块以定义定制映射模块类。
单击新建并填写映射 LoginModule 类名。
单击应用。单击保存以保存新配置。
使用 wsadmin 来将“J2C 连接生成器”配置为使用新的映射模块:
在 wsadmin 提示符处,运行 list 命令以显示 J2CConnectionFactory 对象列表:
wsadmin>$AdminConfig list J2CConnectionFactory
要选择“J2C 连接生成器”,请运行 show 命令以显示所有属性。例如:
wsadmin>$AdminConfig show PetStore_CF
(cells/hillsideNetwork/nodes/hillside/servers/server1:
resources.xml#CMPConnectorFactory_4)
检查当前映射模块配置。运行 show 命令:
wsadmin>$AdminConfig show {mapping
(cells/hillsideNetwork/nodes/hillside/servers/server1:
resources.xml#MappingModule_7)}
下面显示了此命令的样本结果:
{authDataAlias {}} {mappingConfigAlias DefaultPrincipalMapping}
如上一个示例所示,“J2C 连接生成器”已配置为使用 DefaultPrincipalMapping 登录配置。
将映射模块配置修改为使用新的映射模块。运行 modify 命令:
wsadmin>$AdminConfig modify {mapping
(cells/hillsideNetwork/nodes/hillside/servers/server1:
resources.xml#MappingModule_7)} {{mappingConfigAlias myMappingModule}}
可使用 show 命令来检查结果:
wsadmin>$AdminConfig show {mapping
(cells/hillsideNetwork/nodes/hillside/servers/server1:
resources.xml#MappingModule_7)} {authDataAlias {}}
{mappingConfigAlias myMappingModule}
注 意:保留 authDataAlias 属性处于未定义状态。在实践中,在运行时将 authDataAlias 传送至定制映射模块。使用 authDataAlias 属性来查找用户标识和密码需要 “WebSphere 公共配置模型”(WCCM)编程接口,此编程接口此时不可用。
保存更改。输入 save 命令:
wsadmin>save
此 任务允许您使用自己的映射模块,以便适合于您的应用程序环境。WebSphere Application Server 缺省主体映射模块将所有经过认证的用户凭证映射至 EIS 安全域的相同用户标识和密码凭证。用户标识和密码存储在安全性配置文档中,并且通过将已配置的别名作为密钥来查找用户标识和密码。可以进行编程以将映射模 块设计成执行更复杂的映射并将密码存储在其它持久存储器中或使其来自远程服务。
要开发您自己的主体和凭证映射 LoginModule,参见 JAAS LoginModule Developer's Guide (
http://java.sun.com/security/jaas/doc/module.html)。
特 别是,映射模块需要获取调用者的安全性标识。WSSubject.getCallerPrincipal() 静态方法返回一个 com.ibm.websphere.security.auth.WSPrincipal 对象,此对象表示经过认证的调用者的安全性标识。