UsernameToken を暗号化するためのポリシー・セットおよびバインディングの構成
この例では、JAX-WS 要求でユーザー名トークンを送信したり、非対称暗号化によりユーザー名トークンを暗号化したりするために、 メッセージ・レベルの WS-Security ポリシー・セットおよびバインディングを構成する方法を示します。
始める前に
このタスクについて
デフォルトでは、ユーザー名 WSSecurity ポリシー・セットによって、 要求および応答で WS-Addressing ヘッダーおよび本文に署名され、要求および応答で本文およびシグニチャーが暗号化されます。 ただし、この例では、クライアントからサービスへの要求でユーザー名トークンを暗号化することのみが目的であり、 サービスからクライアントへの応答のパーツを暗号化することは目的としていません。 また、要求または応答のいずれのパーツも署名されません。 したがって、ポリシー・セットを変更して、メッセージの保護パーツをいくつか除去する必要があります。 クライアントおよびサーバーのバインディングを構成する必要もあります。
最初に、 ユーザー名 WSSecurity デフォルト・ポリシー・セットのコピーを変更することによって、ポリシー・セットを構成します。
手順
次のタスク
処理手順の 2 番目は、クライアントおよびサーバーのバインディングを構成することです。
トラブルの回避 (Avoid trouble): クライアント・バインディングを処理しているときは、編集したい保護トークンを選ぶ際に注意してください。
トークンの名前は保護する側の観点から表されます。
例えば、クライアントでは、たとえ recipient という単語がクライアントの名前に入っていても、AsymmetricBindingRecipientEncryptionToken0 は生成プログラムです。
正しいトークンを確実に選択するための最適な方法は、「保護トークン」テーブルの「使用法」列を調べることです。gotcha

- 以下のようにして、クライアント・バインディングを構成します。
- ポリシーをサービス・リソースに関連付け、WSSecurity ポリシーを含む、そのリソースの新規バインディングを作成します。
- 新規バインディングの「WSSecurity」をクリックして、WSSecurity バインディングのメイン・パネルを表示します。 例えば、「エンタープライズ・アプリケーション」 >「WSSampleServiceSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」>「WS-Security」とクリックします。
- 「認証と保護」をクリックします。
- 「保護トークン」で、AsymmetricBindingRecipientEncryptionToken0 (非対称暗号生成プログラム) をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- 「鍵ストア」メニューの「カスタム」を選択します。
- 「カスタム鍵ストア構成」をクリックします。
- 鍵ストア・パスを入力します。例えば、${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks などです。
- 「タイプ」で「JCEKS」を選択します。
- 「パスワード」および「確認パスワード」フィールドに、パスワードを入力します。 例えば、storepass などです。
- 鍵の名前を入力します。例えば、CN=Bob, O=IBM, C=US などです。
- 鍵の別名を入力します。例えば、bob などです。
- 「OK」をクリックします。
- 再度「OK」をクリックします。
- もう一度「OK」をクリックして、 「エンタープライズ・アプリケーション」>「WSSampleServicesSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」> 「WS-Security」>「認証と保護」パネルに戻ります。
- AsymmetricBindingRecipientEncryptionToken0 の状況は、「構成済み」と表示されています。
- 以下のようにして、クライアント・バインディングの暗号化パーツ設定を変更します。
- 「要求メッセージのシグニチャーと暗号化保護」で「request:app_encparts」をクリックします。
- 名前を入力します。例えば、MyEncPart などです。
- 「鍵情報」で「新規」をクリックします。
- 名前を入力します。例えば、MyEncKeyInfo などです。
- 「OK」をクリックします。
- 「使用可能」ボックスで「MyEncKeyInfo」(暗号化パーツに指定した名前) を選択して、 「追加」をクリックします。 「割り当て済み」ボックスに「MyEncKeyInfo」が表示されます。
- 「OK」をクリックして、「エンタープライズ・アプリケーション」 >「WSSampleServicesSei」>「サービス・クライアントのポリシー・セット およびバインディング」>「binding_name」>「WS-Security」 >「認証と保護」パネルに戻ります。
- request:app_encparts の状況は、「構成済み」と表示されています。
- 以下のようにして、クライアント・バインディングのユーザー名トークン設定を構成します。
- 「認証トークン」で「request:myUserNameToken」をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- ユーザー名を指定します。例えば、LDAPSunuser6 などです。
- パスワードを指定して、そのパスワードを確認します。
- 「OK」をクリックします。
- 「カスタム・プロパティー」で「新規」をクリックして、nonce およびタイム・スタンプを使用可能にするプロパティーを追加します。
- nonce を使用可能にするため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.addNonce を入力し、 そのプロパティー値に true を入力します。
- タイム・スタンプを使用可能にするため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.addTimestamp を入力し、 そのプロパティー値に true を入力します。
- 再度「OK」をクリックします。
- これで、request:myUserNameToken の状況は、「構成済み」と表示されます。
- 「保存」をクリックして、クライアント・バインディングを保存します。
- 以下のようにして、サーバー・バインディングを構成します。
- ポリシーをサービス・リソースに関連付け、WSSecurity ポリシーを含む、そのリソースの新規バインディングを作成します。
- 新規バインディングの「WSSecurity」をクリックして、WSSecurity バインディングのメイン・パネルを表示します。 例えば、「エンタープライズ・アプリケーション」 >「WSSampleServiceSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」> 「binding_name」>「WS-Security」とクリックします。
- 「認証と保護」をクリックします。
- 「保護トークン」で、AsymmetricBindingRecipientEncryptionToken0 (非対称暗号コンシューマー) をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- 「鍵ストア」メニューの「カスタム」を選択します。
- 「カスタム鍵ストア構成」をクリックします。
- 鍵ストア・パスを入力します。例えば、${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks などです。
- 「タイプ」で「JCEKS」を選択します。
- 「パスワード」および「確認パスワード」フィールドに、パスワードを入力します。 例えば、storepass などです。
- 鍵の名前を入力します。例えば、CN=Bob, O=IBM, C=US などです。
- 鍵の別名を入力します。例えば、bob などです。
- 「パスワード」および「確認パスワード」フィールドに、キー・パスのパスワードを入力します。
- 「OK」をクリックします。
- 再度「OK」をクリックします。
- もう一度「OK」をクリックして、 「エンタープライズ・アプリケーション」>「WSSampleServicesSei」>「サービス・クライアントの ポリシー・セットおよびバインディング」>「binding_name」> 「WS-Security」>「認証と保護」パネルに戻ります。
- AsymmetricBindingRecipientEncryptionToken0 の状況は、「構成済み」と表示されています。
- 以下のようにして、サーバー・バインディングの暗号化パーツ設定を変更します。
- 「要求メッセージのシグニチャーと暗号化保護」で「request:app_encparts」をクリックします。
- 名前を入力します。例えば、MyEncPart などです。
- 「鍵情報」で「新規」をクリックします。
- 名前を入力します。例えば、MyEncKeyInfo などです。
- 「OK」をクリックします。
- 「使用可能」ボックスで「MyEncKeyInfo」(暗号化パーツに指定した名前) を選択して、 「追加」をクリックします。 「割り当て済み」ボックスに「MyEncKeyInfo」が表示されます。
- 「OK」をクリックして、「エンタープライズ・アプリケーション」 >「WSSampleServicesSei」>「サービス・クライアントのポリシー・セット およびバインディング」>「binding_name」>「WS-Security」 >「認証と保護」パネルに戻ります。
- request:app_encparts の状況は、「構成済み」と表示されています。
- 以下のようにして、サーバー・バインディングのユーザー名トークン設定を構成します。
- 「認証トークン」で「request:myUserNameToken」をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- 「OK」をクリックします。
- 「カスタム・プロパティー」で「新規」をクリックして、nonce およびタイム・スタンプを検証するプロパティーを追加します。
- nonce を検証するため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.verifyNonce を入力し、 そのプロパティー値に true を入力します。
- タイム・スタンプを検証するため、プロパティー名 com.ibm.wsspi.wssecurity.token.username.verifyTimestamp を入力し、 そのプロパティー値に true を入力します。
- 再度「OK」をクリックします。
- request:myUserNameToken の状況は、「構成済み」と表示されています。
- 「保存」をクリックして、サーバー・バインディングを保存します。