J2C 主体映射模块
如果应用程序需要更复杂的映射功能,那么您可以开发自己的 J2EE 连接器(J2C)映射模块。您在 WebSphere® Application Server V5.x 中开发的映射登录模块在 WebSphere Application Server V6.0.x 及更高版本中仍然受支持。
可以在连接工厂映射配置中使用 V5.x 登录模块。还可在资源管理器连接工厂的引用映射配置中使用这些登录模块。V5.x 映射登录模块无法使用定制映射属性。
如果要在 V6.0.x 及更高版本中开发新的映射登录模块,请使用下列各节中描述的编程接口。
针对资源引用映射调用登录模块
com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandler 类实现了 javax.security.auth.callback.CallbackHandler 接口,它是 WebSphere Application Server V6.0.x 中新的 WebSphere 应用程序服务提供程序编程接口 (SPI)。
package com.ibm.wsspi.security.auth.callback;
public class WSMappingCallbackHandlerFactory {
private WSMappingCallbackHandlerFactory;
public static CallbackHandler getMappingCallbackHandler(
ManagedConnectionFactory mcf,
HashMap mappingProperties);
}
package com.ibm.wsspi.security.auth.callback;
public class WSMappingCallbackHandler implements CallbackHandler {
public WSMappingCallbackHandler(ManagedConnectionFactory mcf,
HashMap mappingProperties);
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException;
}
com.ibm.wsspi.security.auth.callback.WSManagedConnectionFactoryCallback
com.ibm.wsspi.security.auth.callback.WSMappingPropertiesCallback
这两种新的登录模块使用两种回调类型,它们在资源管理器连接工厂的引用映射配置中使用。WSManagedConnectionFactoryCallback 回调提供您在 PasswordCredential 凭证中设置的 ManagedConnectionFactory 实例。通过使用此设置,ManagedConnectionFactory 实例可确定是否使用 PasswordCredential 实例登录至目标企业信息系统 (EIS) 实例。WSMappingPropertiesCallback 回调提供包含定制映射属性的散列映射。com.ibm.mapping.authDataAlias 属性可用于保留或检索认证数据别名。
com.ibm.ws.security.auth.j2c.WSManagedConnectionFactoryCallback
com.ibm.ws.security.auth.j2c.WSAuthDataAliasCallback
针对连接工厂映射调用登录模块
com.ibm.wsspi.security.auth.callback.WSManagedConnectionFactoryCallback
com.ibm.wsspi.security.auth.callback.WSMappingPropertiesCallback
WebSphere Application Server V6 中不推荐使用 WSPrincipalMappingCallbackHandler 处理程序和这两种回调。
将资源引用的映射属性传递到映射登录模块
可将任意定制属性传递至映射登录模块。以下示例显示 WebSphere Application Server 缺省映射登录模块如何查找认证数据别名属性。
try {
wspm_callbackHandler.handle(callbacks);
String userID = null;
String password = null;
String alias = null;
wspm_properties = ((WSMappingPropertiesCallback)callbacks[1]).getProperties();
if (wspm_properties != null) {
alias = (String) wspm_properties.get(com.ibm.wsspi.security.auth.callback.
Constants.MAPPING_ALIAS);
if (alias != null) {
alias = alias.trim();
}
}
} catch (UnsupportedCallbackException unsupportedcallbackexception) {
. . . // error handling
MAPPING_ALIAS = "com.ibm.mapping.authDataAlias"
您在“将资源引用映射至资源”面板上单击
时,管理控制台将自动使用映射属性中的所选认证数据别名值创建 MAPPING_ALIAS 条目。如果创建您自己的定制登录配置,然后使用缺省映射登录模块,那么必须在映射属性上为资源工厂引用手动设置此属性。在定制登录模块中,可以使用 WSSubject.getRunAsSubject 方法来获取表示当前运行中线程标识的主体集。当前运行中线程的标识称为 RunAs 标识。RunAs 主体集通常包含主体集合中的 WSPrincipal 主体,并且包含公用凭证集中的 WSCredential 凭证。由您的映射模块创建的主体集实例包含主体集中的 Principal 实例和专用凭证集中的 PasswordCredential 凭证或 org.ietf.jgss.GSSCredential 实例。
在 Java 连接器体系结构 (JCA) 规范 V1.5 中,不推荐使用 JCA V1.0 中定义的 GenericCredential 接口。