理解 IBM InfoSphere MDM Server 安全性,第 2 部分

验证服务简介

通过示例应用程序客户机解释 MDM Server 8 验证

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 理解 IBM InfoSphere MDM Server 安全性,第 2 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:理解 IBM InfoSphere MDM Server 安全性,第 2 部分

敬请期待该系列的后续内容。

简介

当启用了安全性时,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 应用程序瘦客户机

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 响应消息
MDM Server 响应消息
MDM Server 响应消息

如果要使用 SSL 确保传输通道的安全,那么配置 sas.client.props 和 ssl.client.props。要了解更多关于为 RMI/IIOP 瘦客户机配置 SSL 的信息,请查看 WebSphere Application Server 信息中心中的 ssl.client.props 配置文件。

Web 服务应用程序客户机

MDM Server Web 服务支持消息级安全,可在消息级应用验证机制、完整性和机密性。无论传输层协议是什么,通过基于 SSL 的消息级安全可在多个服务之间实现端到端的安全性。在消息级,将安全令牌、时间戳、签名和加密密钥等安全元素插入到 SOAP 消息头部。当 MDM Server 收到令牌时,它提取用户名和密码,并进行验证。如果它是有效的,则处理消息。

如何配置安全性

本节展示为一个 Web 服务的 Web 客户机配置用户名令牌的场景。配置步骤如下:

  1. 导入 MDM Server 的 Web 服务定义语言(Web service definition languages,WSDL),并创建 Web 服务 Web 客户机。要了解更多关于生成 Web 服务代理和使用 TCP/IP 监视器的信息,请参阅 WebSphere Application Server Information Center 的 “Creating Web services Client” 小节。
  2. 在 WS Extension 中打开部署描述文件,导航到 Request Generator Configuration > Security Token,添加一个用户名令牌,比如 MDMToken。
    图 3. 安全令牌配置
    安全令牌配置
    安全令牌配置
  3. 选择 Username Token 作为令牌类型。
    图 4. Security Token 对话框
    Security Token 对话框
    Security Token 对话框
  4. 在 WS binding 选项卡上,导航到 Security Request Generator Binding Configuration > Token Generator,添加一个新的令牌生成器。
    图 5. 令牌生成器配置
    令牌生成器配置
    令牌生成器配置
  5. 勾选 Use value type 复选框,并在 Value type 中选择 Username Token
  6. 如果使用固定用户,那么在 Callback handler 中选择 com.ibm.wsspi.wssecurity.auth.callback.NonPromptCallbackHandler,并在 User ID 和 Password 文本域中输入一个可登录到 InfoSphere MDM Server 的用户名和密码。
    图 6. Token Generator 对话框
    Token Generator 对话框
    Token Generator 对话框
  7. 如果使用动态用户,那么在 Callback handler 中输入一个定制的回调处理程序名称,比如 com.ibm.mdm.ws.callbackhandler.UsernameHandler
    图 7. Token Generator 对话框 2
    Token Generator 对话框 2
    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");
      }
    }
    
  }

. . .

}

如何运行示例

遵循以下步骤运行示例:

  1. MDMWSClient.ear 导入到一个工作区,打开 MDMWSClientSample 项目中的 index.jsp
    图 8. Web 服务客户机示例
    Web 服务客户机示例
    Web 服务客户机示例
  2. 在 MDM Web Services EndPoint 文本域中输入一个 MDM 服务端点,比如 http://localhost:9080/PartyWS_HTTPRouter/services/PabrtyPort
  3. 如果使用动态用户,那么在 “user name” 和 “password” 文本域中输入用户名和密码。
  4. 在 Add Party Input Panel 文本域中输入一个 party ID(一个 long 型的数字)和一个名称。
  5. 单击 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 的验证。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=363315
ArticleTitle=理解 IBM InfoSphere MDM Server 安全性,第 2 部分: 验证服务简介
publish-date=01132009