2

JAX-WS を使用して WPS の HumanTask API を使用するフロントエンド Web アプリケーションを構築したいと考えています。この Web アプリケーションは、特定のユーザーの現在のタスクを照会したり、他のユーザーが以前に要求していないタスクを要求したり、タスクを完了したりできる必要があります。この Web アプリケーションは、HumanTask サービスを提供するセルとは異なるセルの WAS 7.0 にデプロイされます (現在、別の WPS インスタンスを WAS として使用していますが、最終的には WPS 機能のない単純な WAS になります)。以下の手順で LTPA 生成鍵を同期しました。

  1. 1 つのセルにログインする
  2. [セキュリティ] > [グローバル セキュリティ] に移動します。「認証」の下にある「LTPA」をクリックします。
  3. 「クロスセル シングル サインオン」の下
    1. パスワードを設定する
    2. パスワードを確認する
    3. LTPA キーがエクスポートされるファイル名を入力します
    4. 「キーのエクスポート」をクリックします
  4. ログアウト
  5. 生成されたファイルを他のサーバーにコピーします
  6. 他のセルにログインする
  7. [セキュリティ] > [グローバル セキュリティ] に移動します。「認証」の下にある「LTPA」をクリックします。
  8. 「クロスセル シングル サインオン」の下
    1. 以前のパスワードを入力
    2. パスワードを認証する
    3. エクスポートされた LTPA キーを含むファイル名を入力します
    4. 「キーのインポート」をクリックします
  9. サーバーを再起動する

シンプルな 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 が生成され、サービス クライアント側で発生したのと同じ例外が報告されます。

私たちを助けることができる人は素晴らしいでしょう!

4

1 に答える 1

2

同じ問題がありましたが、次の手順で解決できました。基本的に、HTM JAXWS API に適用されるデフォルトのポリシー セットを変更し (デフォルトは単なる例です)、LTPA トークンに含まれる ID を「呼び出し元」を介して抽出できるカスタム プロバイダー バインディングを使用する必要があります。以下の手順:

カスタム ポリシー セット バインディングの作成

1) 「サービス」 > 「ポリシー セット」 > 「一般プロバイダー ポリシー セット バインディング」をクリックします。 2) 「プロバイダー サンプル」バインディングを選択し、「コピー...」をクリックします。 3) 名前を「LTPA Authenticated Caller」として入力し、「OK」をクリックします。 4) バインディングのリストで「LTPA Authenticated Caller」をクリックします。 5) 「WS-Security」をクリックしてから「Caller」をクリックします。 6) 「New」をクリックし、次の詳細を入力します (他のフィールドは空白のままにします)。 名前: auth_ltpa 呼び出し元 IDローカル部分: LTPAv2 発信者 ID 名前空間 URI: http://www.ibm.com/websphere/appserver/tokentype [OK ] をクリックします

ポリシー セットとバインディングの割り当て

1) [サービス] を展開し、[サービス プロバイダー] をクリックします。 2) [HTMJAXWSService] をクリックします。 3) チェックボックスをクリックして、[ポリシー セットの添付ファイル] リストで HTMJAXWSService サービスを選択し、[ポリシー セットの添付] ドロップで [LTPA WSSecurity デフォルト] をクリックします。ダウン リスト 4) チェックボックスをクリックして、[ポリシー セットの添付ファイル] リストで HTMJAXWSService サービスを選択し、[バインドの割り当て] ドロップダウン リストで [LTPA 認証呼び出し元] をクリックします。 5) マスター構成へのすべての変更を保存します。

ポリシー セットとバインディングの割り当て

1) 「サービス」を展開し、「サービスクライアント」をクリックします。 2) 「デプロイされたアセット」列が、構成したいクライアントを含むモジュールと一致する「HTMJAXWSService」リンクをクリックします。 3) チェックボックスをクリックして、 [ポリシー セットの添付] リストで、[ポリシー セットの添付] ドロップダウン リストの [LTPA WSSecurity デフォルト] をクリックします。この設定がすべての子レベル (つまり、ポートとすべてのメソッド) に継承されていることを確認します。 4) チェックボックスをクリックして [ポリシー セットの添付ファイル] リストで HTMJAXWSService サービスを選択し、[バインディングの割り当て] ドロップダウン リストで [デフォルト] をクリックします。 ) すべての変更をマスター構成に保存します

結論

これで、LTPA 認証を使用してクライアントから HTM API を呼び出すことができるはずです。これを行うには、認証を要求するか、認証されていない URL の認証を提供するようにクライアント アプリケーションを構成する必要があります (後者は、SiteMinder TAI が認証されたユーザー ID を事前入力することを期待しているアプリケーションに適しています)。

お役に立てれば!

于 2011-10-13T08:13:19.977 に答える