当启用了安全性时,InfoSphere MDM Server 应用程序客户机必须经过应用服务器的验证才能访问 InfoSphere MDM Server。InfoSphere MDM 应用程序客户机负责利用适当的验证机制登录到应用服务器,并访问 InfoSphere MDM Server。
本文假设您对以下内容有一定的了解:
- WebSphere® Application Server 安全性(详细信息请参见 WebSphere Security Handbook)
- Java Authentication and Authorization Service(JAAS)登录模块和回调处理程序
- Web 服务安全性
InfoSphere MDM Server 支持多种应用程序客户机,包括 Web 应用程序客户机、应用程序瘦客户机、J2EE 应用程序客户机和 Applet 应用程序客户机。其中 Web 应用程序客户机和 Java 应用程序瘦客户机是最常用的。本文提供一组示例,以便让您体验如何配置和实现不同的 InfoSphere MDM Server 客户机。每个专题简要地介绍了如何配置和实现应用程序客户机最有用的方面,并提供了关于如何安装和运行这个示例的说明。
Java 应用程序瘦客户机必须使用 CSIV2 SAS 协议来访问 WebSphere Application Server 上启用了安全性的 InfoSphere MDM Server。一种选项是使用 WebSphere Application Server 提供的 SAS 客户机。您需要配置 SAS 客户机属性文件,并在 Java 客户机 JVM 参数中设置 CORBA configURL。要了解关于 WebSphere 中的 Java Application Client Authentication 的更多信息,请参阅 WebSphere Security Handbook。
如何配置验证
在 sas.client.props 中编辑以下属性来配置验证:
清单 1. 验证属性
com.ibm.CORBA.authenticationTarget=BasicAuth com.ibm.CORBA.authenticationRetryEnabled=true com.ibm.CORBA.authenticationRetryCount=3 com.ibm.CORBA.validateBasicAuth=true . . . com.ibm.CORBA.loginTimeout=300 com.ibm.CORBA.loginSource=prompt # RMI/IIOP user identity com.ibm.CORBA.loginUserid=SampleUser com.ibm.CORBA.loginPassword=aPassword |
当运行 Java 应用程序瘦客户机时,添加一个 JVM 参数,以提供指向 SAS 客户机属性文件位置的 CORBA configURL,比如 java -Dcom.ibm.CORBA.ConfigURL=file:properties/sas.client.props
JavaClient。
示例代码
创建一个 Java 应用程序客户机,使用以下代码访问 InfoSphere MDM Server 服务:
清单 2. 验证代码
Hashtable ctxParams = new Hashtable(1);
ctxParams.put(Context.PROVIDER_URL, this.CORBA_URL);
ctxParams.put(Context.INITIAL_CONTEXT_FACTORY, this.contextFactory);
. . .
InitialContext ctx = new InitialContext(ctxParams);
obj = ctx.lookup(EJB_HOME_JNDI_NAME);
theDWLServiceControllerHome = (DWLServiceControllerHome) javax.rmi.PortableRemoteObject
.narrow(obj, DWLServiceControllerHome.class);
DWLServiceController aDWLServiceController = theDWLServiceControllerHome.create();
response = (String) (aDWLServiceController.
processRequest(getTCRMContext(), SAMPLE_REQUEST));
|
如何运行示例
下载和解压示例 JavaClient.zip。打开批处理文件 JavaClientSecurityEnabled.bat,对 SERVER_URL、CLIENT_DIR 和 WAS_DIR 进行以下设置:
- 将 SERVER_URL 设为服务器引导 IIOP,比如
iiop://localhost:2809 - 将 CLIENT_DIR 设为瘦客户机位置,比如
CLIENT_DIR=C:\JavaClient - 将 WAS_DIR 设为 WebSphere Application Server 6.1 主目录,比如
WAS_DIR =C:\IBM\SDP70\runtimes\base_v61
运行脚本 JavaClientSecurityEnabled.bat。
如果 InfoSphere MDM Server 启用了安全性,则登录窗口时将提示输入用户名和密码。
图 1. 登录窗口
输入用户名和密码后,安全性属性随请求被传递到服务器。处理请求后将会显示响应。
图 2. MDM Server 响应消息
如果要使用 SSL 确保传输通道的安全,那么配置 sas.client.props 和 ssl.client.props。要了解更多关于为 RMI/IIOP 瘦客户机配置 SSL 的信息,请查看 WebSphere Application Server 信息中心中的 ssl.client.props 配置文件。
MDM Server Web 服务支持消息级安全,可在消息级应用验证机制、完整性和机密性。无论传输层协议是什么,通过基于 SSL 的消息级安全可在多个服务之间实现端到端的安全性。在消息级,将安全令牌、时间戳、签名和加密密钥等安全元素插入到 SOAP 消息头部。当 MDM Server 收到令牌时,它提取用户名和密码,并进行验证。如果它是有效的,则处理消息。
如何配置安全性
本节展示为一个 Web 服务的 Web 客户机配置用户名令牌的场景。配置步骤如下:
- 导入 MDM Server 的 Web 服务定义语言(Web service definition languages,WSDL),并创建 Web 服务 Web 客户机。要了解更多关于生成 Web 服务代理和使用 TCP/IP 监视器的信息,请参阅 WebSphere Application Server Information Center 的 “Creating Web services Client” 小节。
- 在 WS Extension 中打开部署描述文件,导航到 Request Generator Configuration > Security Token,添加一个用户名令牌,比如 MDMToken。
图 3. 安全令牌配置
- 选择 Username Token 作为令牌类型。
图 4. Security Token 对话框
- 在 WS binding 选项卡上,导航到 Security Request Generator Binding Configuration > Token Generator,添加一个新的令牌生成器。
图 5. 令牌生成器配置
- 勾选 Use value type 复选框,并在 Value type 中选择 Username Token。
- 如果使用固定用户,那么在 Callback handler 中选择 com.ibm.wsspi.wssecurity.auth.callback.NonPromptCallbackHandler,并在 User ID 和 Password 文本域中输入一个可登录到 InfoSphere MDM Server 的用户名和密码。
图 6. Token Generator 对话框
- 如果使用动态用户,那么在 Callback handler 中输入一个定制的回调处理程序名称,比如 com.ibm.mdm.ws.callbackhandler.UsernameHandler。
图 7. Token Generator 对话框 2
示例代码
下面的代码显示一个定制回调处理程序。
清单 3. 定制的回调处理程序
import javax.security.auth.callback.CallbackHanlder
public class UsernameHandler implements CallbackHandler {
. . .
public void handle(Callback[] callbacks)
throws IOException,UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof NameCallback) {
NameCallback nameCallback = (NameCallback)callbacks[i];
nameCallback.setName(getUsername());
} else if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback pwdCallback = (PasswordCallback)callbacks[i];
pwdCallback.setPassword(getPassword().toCharArray());
} else if(callbacks[i] instanceof PropertyCallback){
//Get the property if necessary
} else {
throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
}
}
}
. . .
}
|
如何运行示例
遵循以下步骤运行示例:
- 将 MDMWSClient.ear 导入到一个工作区,打开 MDMWSClientSample 项目中的 index.jsp。
图 8. Web 服务客户机示例
- 在 MDM Web Services EndPoint 文本域中输入一个 MDM 服务端点,比如 http://localhost:9080/PartyWS_HTTPRouter/services/PabrtyPort。
- 如果使用动态用户,那么在 “user name” 和 “password” 文本域中输入用户名和密码。
- 在 Add Party Input Panel 文本域中输入一个 party ID(一个 long 型的数字)和一个名称。
- 单击 Submit。
如果添加了 party,则 party ID 和名称会显示在 Party Response 面板中。可以使用 TCP/IP 监视器来确认用户名令牌是否随 SOAP 消息一起传递,如清单 4 所示:
清单 4. 示例 SOAP 消息
<soapenv:Envelope
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-secext-1.0.xsd"
soapenv:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>sampleUserName</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-username-token-profile-1.0#PasswordText">
samplePassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
. . .
</soapenv:Body>
</soapenv:Envelope>
|
使用 InfoSphere MDM Server 时必须通过一个应用程序客户机来访问它。本文展示了两个场景,它们实现在启用了安全性的 InfoSphere MDM Server 上经过验证的应用程序客户机。本文还展示了如何通过示例代码配置和定制应用程序客户机。
InfoSphere MDM Sever 还在它的包中提供应用程序客户机,比如 Batch Processor(一个 Java 应用程序瘦客户机)和 Administration and Data Stewardship 应用程序(Web 应用程序客户机)。这些应用程序可以在启用或未启用安全性的 InfoSphere MDM Server 上运行。要想知道如何配置这些应用程序客户机来访问启用了安全性的 InfoSphere MDM Server,请参阅 “InfoSphere MDM Server Installation Guide”。
InfoSphere MDM Server 可在 WebSphere Application Server 或 BEA WebLogic 应用服务器上运行。接下来的文章将阐述如何配置和定制应用程序客户机,以通过 BEA WebLogic 应用服务器上的 InfoSphere MDM Server 的验证。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 示例 Java 客户机 | JavaClient.zip | 43KB | HTTP |
| 示例 Web 服务应用客户机 | MDMWSClient.ear | 6.6MB | HTTP |
学习
- 您可以参阅本文在 developerWorks 全球网站上的 英文原文。
- 访问 Information Management 专区
InfoSphere 专题:在这里可以找到更多关于 InfoSphere 的技术资源。
- “IBM InfoSphere MDM Server
Information Center”:找到大量关于该产品的安全特性的信息,包括上面描述的每个组件的详细配置信息。
- “Creating
Web services Client”:在 WebSphere Application Server Information Center 中阅读这个内容丰富的小节。
- “ssl.client.props
configuration file”:在 WebSphere Application Server Information Center 中阅读这个小节,了解更多关于为 RMI/IIOP 瘦客户机配置 SSL 的信息。
-
“Securing
Web services applications using JAX-RPC at the message level”:了解标准和配置文件如何为 Web 服务环境中的交换消息提供保护。
- “Authentication
protocol settings for a client configuration”:在 WebSphere Application Server Information Center 的该小节中详细了解如何适当地配置一个 Web 服务客户机以便进行验证。
- 浏览 技术书店,阅读有关这些主题和其他技术主题的图书。
-
developerWorks Information Management 专区:在这里可以学到更多关于 DB2 的知识。还可以找到技术文档、how-to 文章、培训、产品信息等等。
-
随时关注 developerWorks
技术活动和网络广播。
获得产品和技术
-
用可直接从 developerWorks 下载的 IBM 试用软件 构建您的下一个开发项目。
讨论

