我们想要构建一个前端 Web 应用程序,以使用 JAX-WS 使用 WPS 的 HumanTask API。此 Web 应用程序应该能够查询特定用户的当前任务、声明任何其他用户之前未声明的任务、完成任务等。此 Web 应用程序将部署在 WAS 7.0 上,它位于与提供 HumanTask 服务的单元不同的单元上(目前我们正在使用另一个 WPS 实例作为 WAS,但最终它将是一个没有 WPS 功能的简单 WAS)。我们通过以下步骤同步了 LTPA 生成密钥:
- 登录一个单元格
- 转到“安全”>“全球安全”。在“身份验证”下单击“LTPA”
- 在“跨单元单点登录”下
- 建立密码
- 确认密码
- 输入将导出 LTPA 密钥的文件名
- 点击“导出密钥”
- 登出
- 将生成的文件复制到另一台服务器
- 登录到另一个单元格
- 转到“安全”>“全球安全”。在“身份验证”下单击“LTPA”
- 在“跨单元单点登录”下
- 输入以前的密码
- 确认密码
- 使用导出的 LTPA 密钥输入文件名
- 点击“导入密钥”
- 重启服务器
我们使用 GWT 作为概念证明开发了一个简单的 Web 应用程序,它具有一个简单的 UI 和一个使用 HumanTask JAX-WS 服务的 Web 服务客户端。此 Web 应用程序受到 Siteminder 身份验证器的保护(当第一次进入 Web 应用程序时,Siteminder 代理会重定向到请求凭据的 Web 表单)。Web 服务客户端是按照 JAX-WS 标准开发的,没有添加额外的依赖项,我们依赖于 WebSphere JAX-WS 实现(Apache Axis2)。部署后,我们在没有运气的情况下测试了两个场景:
方案 A:
- 默认情况下,WPS 的 HumanTask 服务提供者附加到策略集“BPC Web 服务”,默认策略集绑定和策略集共享被禁用。
- 我们将 HumanTask 服务客户端配置为使用与服务提供者相同的策略集。
登录到自定义 Web 应用程序。当尝试查询当前任务时,我们得到以下异常:
com.ibm.wsspi.wssecurity.core.SoapSecurityException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login Failure: all modules ignored ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityGeneratorHandler$2@6fef6fef
服务提供商端没有错误消息。
方案 B:
- 更改 WPS 的 HumanTask 服务提供者配置,通过 HTTP GET 启用策略集共享。这种方式服务提供者 WSDL 包含有关策略集的信息。
- 更改服务客户端的策略集配置以使用 HTTP GET 从提供者获取策略集。
登录到自定义 Web 应用程序。当尝试查询当前任务时,我们得到以下异常:
javax.xml.ws.soap.SOAPFaultException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login module com.ibm.ws.wssecurity.wssapi.token.impl.UNTConsumeLoginModule login() method returned false ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@54a054a0
在到达报告先前异常的点之前,我们在服务客户端日志中看到以下警告:
CWWSS7053W: No web services security custom bindings were found. Default bindings will be used.
在服务提供商日志中,我们可以看到以下错误:
CWWSS5514E: An exception while processing WS-Security message.
并且生成了一组 FFDC,报告了我们在服务客户端遇到的相同异常。
能帮助我们的人会很棒!