UsernameToken を暗号化するためのポリシー・セットおよびバインディングの構成

この例では、JAX-WS 要求でユーザー名トークンを送信したり、非対称暗号化によりユーザー名トークンを暗号化したりするために、 メッセージ・レベルの WS-Security ポリシー・セットおよびバインディングを構成する方法を示します。

始める前に

ユーザー名 WSSecurity デフォルト・ポリシー・セットのコピーを作成し、それに固有の名前を付けます。 この例では、デフォルト・ポリシー・セットのコピーの変更方法について説明します。 詳しくは、デフォルト・ポリシー・セットおよびバインディングのコピー設定についての説明を参照してください。

このタスクについて

デフォルトでは、ユーザー名 WSSecurity ポリシー・セットによって、 要求および応答で WS-Addressing ヘッダーおよび本文に署名され、要求および応答で本文およびシグニチャーが暗号化されます。 ただし、この例では、クライアントからサービスへの要求でユーザー名トークンを暗号化することのみが目的であり、 サービスからクライアントへの応答のパーツを暗号化することは目的としていません。 また、要求または応答のいずれのパーツも署名されません。 したがって、ポリシー・セットを変更して、メッセージの保護パーツをいくつか除去する必要があります。 クライアントおよびサーバーのバインディングを構成する必要もあります。

最初に、 ユーザー名 WSSecurity デフォルト・ポリシー・セットのコピーを変更することによって、ポリシー・セットを構成します。

手順

  1. 管理コンソールで、「サービス」>「ポリシー・セット」>「アプリケーション・ポリシー・セット」> 「policy_set_name」をクリックします。 「ポリシー・セットの設定 (Policy set settings)」パネルで、説明などのポリシー・セット情報を指定できます。
  2. メッセージの保護パーツ、request:app_signparts、response:app_signparts、および response:app_encparts を除去します。
    1. 「アプリケーション・ポリシー・セット (Application policy sets)」>「policy_set_name」>「WS-Security」>「メイン・ポリシー」>「応答メッセージ・パーツの保護」をクリックします。
    2. 「暗号化される部分」ボックスで「app_encparts」をクリックして、 「削除」ボタンをクリックします。
    3. 「署名される部分」ボックスで「app_signparts」をクリックして、 「削除」ボタンをクリックします。
    4. 「アプリケーション・ポリシー・セット (Application policy sets)」>「policy_set_name」>「WS-Security」>「メイン・ポリシー」>「要求メッセージ・パーツの保護」をクリックします。
    5. 「署名される部分」ボックスで「app_signparts」をクリックして、 「削除」ボタンをクリックします。
  3. request:app_encparts の保護パーツ指定を更新します。 このメッセージの保護パーツによって、デフォルトでは、本文エレメントおよびシグニチャー・エレメントが暗号化されるため、 ユーザー名トークンが暗号化されるように変更する必要があります。
    1. 「アプリケーション・ポリシー・セット」>「policy_set_name」> 「WS-Security」>「メイン・ポリシー」>「要求メッセージ・パーツの保護」>「暗号化される パーツ - app_encparts」>「編集」をクリックします。
    2. 「パーツ内のエレメント」パネルで、既存のエレメントを削除し、 次に、ユーザー名トークンが暗号化されるように 2 つの XPath 式を追加します。

      式 1:

      /*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' 
              and local-name()='Envelope']/*[namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/' 
              and local-name()='Header']/*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' 
              and local-name()='Security']/*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' 
              and local-name()='UsernameToken']

      式 2:

      /*[namespace-uri()='http://www.w3.org/2003/05/soap-envelope' 
              and local-name()='Envelope']/*[namespace-uri()='http://www.w3.org/2003/05/soap-envelope' 
              and local-name()='Header']/*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' 
              and local-name()='Security']/*[namespace-uri()='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' 
              and local-name()='UsernameToken']

次のタスク

処理手順の 2 番目は、クライアントおよびサーバーのバインディングを構成することです。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): クライアント・バインディングを処理しているときは、編集したい保護トークンを選ぶ際に注意してください。 トークンの名前は保護する側の観点から表されます。 例えば、クライアントでは、たとえ recipient という単語がクライアントの名前に入っていても、AsymmetricBindingRecipientEncryptionToken0 は生成プログラムです。 正しいトークンを確実に選択するための最適な方法は、「保護トークン」テーブルの「使用法」列を調べることです。gotcha
  1. 以下のようにして、クライアント・バインディングを構成します。
    1. ポリシーをサービス・リソースに関連付け、WSSecurity ポリシーを含む、そのリソースの新規バインディングを作成します。
    2. 新規バインディングの「WSSecurity」をクリックして、WSSecurity バインディングのメイン・パネルを表示します。 例えば、「エンタープライズ・アプリケーション」 >「WSSampleServiceSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」>「WS-Security」とクリックします。
    3. 認証と保護」をクリックします。
    4. 「保護トークン」で、AsymmetricBindingRecipientEncryptionToken0 (非対称暗号生成プログラム) をクリックします。
    5. 適用」をクリックします。
    6. コールバック・ハンドラー」をクリックします。
    7. 「鍵ストア」メニューの「カスタム」を選択します。
    8. カスタム鍵ストア構成」をクリックします。
    9. 鍵ストア・パスを入力します。例えば、${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks などです。
    10. 「タイプ」で「JCEKS」を選択します。
    11. 「パスワード」および「確認パスワード」フィールドに、パスワードを入力します。 例えば、storepass などです。
    12. 鍵の名前を入力します。例えば、CN=Bob, O=IBM, C=US などです。
    13. 鍵の別名を入力します。例えば、bob などです。
    14. 「OK」をクリックします。
    15. 再度「OK」をクリックします。
    16. もう一度「OK」をクリックして、 「エンタープライズ・アプリケーション」>「WSSampleServicesSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」> 「WS-Security」>「認証と保護」パネルに戻ります。
    17. AsymmetricBindingRecipientEncryptionToken0 の状況は、「構成済み」と表示されています。
  2. 以下のようにして、クライアント・バインディングの暗号化パーツ設定を変更します。
    1. 「要求メッセージのシグニチャーと暗号化保護」で「request:app_encparts」をクリックします。
    2. 名前を入力します。例えば、MyEncPart などです。
    3. 「鍵情報」で「新規」をクリックします。
    4. 名前を入力します。例えば、MyEncKeyInfo などです。
    5. 「OK」をクリックします。
    6. 「使用可能」ボックスで「MyEncKeyInfo」(暗号化パーツに指定した名前) を選択して、 「追加」をクリックします。 「割り当て済み」ボックスに「MyEncKeyInfo」が表示されます。
    7. OK」をクリックして、「エンタープライズ・アプリケーション」 >「WSSampleServicesSei」>「サービス・クライアントのポリシー・セット およびバインディング」>「binding_name」>「WS-Security」 >「認証と保護」パネルに戻ります。
    8. request:app_encparts の状況は、「構成済み」と表示されています。
  3. 以下のようにして、クライアント・バインディングのユーザー名トークン設定を構成します。
    1. 「認証トークン」で「request:myUserNameToken」をクリックします。
    2. 適用」をクリックします。
    3. コールバック・ハンドラー」をクリックします。
    4. ユーザー名を指定します。例えば、LDAPSunuser6 などです。
    5. パスワードを指定して、そのパスワードを確認します。
    6. 「OK」をクリックします。
    7. カスタム・プロパティー」で「新規」をクリックして、nonce およびタイム・スタンプを使用可能にするプロパティーを追加します。
    8. nonce を使用可能にするため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.addNonce を入力し、 そのプロパティー値に true を入力します。
    9. タイム・スタンプを使用可能にするため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.addTimestamp を入力し、 そのプロパティー値に true を入力します。
    10. 再度「OK」をクリックします。
    11. これで、request:myUserNameToken の状況は、「構成済み」と表示されます。
    12. 保存」をクリックして、クライアント・バインディングを保存します。
  4. 以下のようにして、サーバー・バインディングを構成します。
    1. ポリシーをサービス・リソースに関連付け、WSSecurity ポリシーを含む、そのリソースの新規バインディングを作成します。
    2. 新規バインディングの「WSSecurity」をクリックして、WSSecurity バインディングのメイン・パネルを表示します。 例えば、「エンタープライズ・アプリケーション」 >「WSSampleServiceSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」> 「binding_name」>「WS-Security」とクリックします。
    3. 認証と保護」をクリックします。
    4. 「保護トークン」で、AsymmetricBindingRecipientEncryptionToken0 (非対称暗号コンシューマー) をクリックします。
    5. 適用」をクリックします。
    6. コールバック・ハンドラー」をクリックします。
    7. 「鍵ストア」メニューの「カスタム」を選択します。
    8. カスタム鍵ストア構成」をクリックします。
    9. 鍵ストア・パスを入力します。例えば、${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks などです。
    10. 「タイプ」で「JCEKS」を選択します。
    11. 「パスワード」および「確認パスワード」フィールドに、パスワードを入力します。 例えば、storepass などです。
    12. 鍵の名前を入力します。例えば、CN=Bob, O=IBM, C=US などです。
    13. 鍵の別名を入力します。例えば、bob などです。
    14. 「パスワード」および「確認パスワード」フィールドに、キー・パスのパスワードを入力します。
    15. 「OK」をクリックします。
    16. 再度「OK」をクリックします。
    17. もう一度「OK」をクリックして、 「エンタープライズ・アプリケーション」>「WSSampleServicesSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」> 「WS-Security」>「認証と保護」パネルに戻ります。
    18. AsymmetricBindingRecipientEncryptionToken0 の状況は、「構成済み」と表示されています。
  5. 以下のようにして、サーバー・バインディングの暗号化パーツ設定を変更します。
    1. 「要求メッセージのシグニチャーと暗号化保護」で「request:app_encparts」をクリックします。
    2. 名前を入力します。例えば、MyEncPart などです。
    3. 「鍵情報」で「新規」をクリックします。
    4. 名前を入力します。例えば、MyEncKeyInfo などです。
    5. 「OK」をクリックします。
    6. 「使用可能」ボックスで「MyEncKeyInfo」(暗号化パーツに指定した名前) を選択して、 「追加」をクリックします。 「割り当て済み」ボックスに「MyEncKeyInfo」が表示されます。
    7. OK」をクリックして、「エンタープライズ・アプリケーション」 >「WSSampleServicesSei」>「サービス・クライアントのポリシー・セット およびバインディング」>「binding_name」>「WS-Security」 >「認証と保護」パネルに戻ります。
    8. request:app_encparts の状況は、「構成済み」と表示されています。
  6. 以下のようにして、サーバー・バインディングのユーザー名トークン設定を構成します。
    1. 「認証トークン」で「request:myUserNameToken」をクリックします。
    2. 適用」をクリックします。
    3. コールバック・ハンドラー」をクリックします。
    4. 「OK」をクリックします。
    5. カスタム・プロパティー」で「新規」をクリックして、nonce およびタイム・スタンプを検証するプロパティーを追加します。
    6. nonce を検証するため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.verifyNonce を入力し、 そのプロパティー値に true を入力します。
    7. タイム・スタンプを検証するため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.verifyTimestamp を入力し、 そのプロパティー値に true を入力します。
    8. 再度「OK」をクリックします。
    9. request:myUserNameToken の状況は、「構成済み」と表示されています。
    10. 保存」をクリックして、サーバー・バインディングを保存します。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configmsglvlpolicyset
ファイル名:twbs_configmsglvlpolicyset.html