JAX-WS を使用して WPS の HumanTask API を使用するフロントエンド Web アプリケーションを構築したいと考えています。この Web アプリケーションは、特定のユーザーの現在のタスクを照会したり、他のユーザーが以前に要求していないタスクを要求したり、タスクを完了したりできる必要があります。この Web アプリケーションは、HumanTask サービスを提供するセルとは異なるセルの WAS 7.0 にデプロイされます (現在、別の WPS インスタンスを WAS として使用していますが、最終的には WPS 機能のない単純な WAS になります)。以下の手順で LTPA 生成鍵を同期しました。
- 1 つのセルにログインする
- [セキュリティ] > [グローバル セキュリティ] に移動します。「認証」の下にある「LTPA」をクリックします。
- 「クロスセル シングル サインオン」の下
- パスワードを設定する
- パスワードを確認する
- LTPA キーがエクスポートされるファイル名を入力します
- 「キーのエクスポート」をクリックします
- ログアウト
- 生成されたファイルを他のサーバーにコピーします
- 他のセルにログインする
- [セキュリティ] > [グローバル セキュリティ] に移動します。「認証」の下にある「LTPA」をクリックします。
- 「クロスセル シングル サインオン」の下
- 以前のパスワードを入力
- パスワードを認証する
- エクスポートされた LTPA キーを含むファイル名を入力します
- 「キーのインポート」をクリックします
- サーバーを再起動する
シンプルな UI と、HumanTask JAX-WS サービスを使用する Web サービス クライアントを備えた概念実証として、GWT を使用したシンプルな Web アプリケーションを開発しました。この Web アプリケーションは、Siteminder オーセンティケーターの背後で保護されています (最初に Web アプリケーションに入るとき、Siteminder エージェントは資格情報を要求する Web フォームにリダイレクトします)。Web サービス クライアントは JAX-WS 標準に従って開発されました。追加の依存関係は追加されていません。WebSphere JAX-WS 実装 (Apache Axis2) に依存しています。展開したら、運が悪かった2つのシナリオをテストしました。
シナリオ 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 が生成され、サービス クライアント側で発生したのと同じ例外が報告されます。
私たちを助けることができる人は素晴らしいでしょう!