JAX-WS のコールバック・ハンドラー設定

このページを使用して、メッセージ・ヘッダーからセキュリティー・トークンを取得する方法を決定する JAX-WS の コールバック・ハンドラー設定を構成します。

コールバック・ハンドラー設定の構成は、汎用のセル・レベルまたはサーバー・レベルのバインディングを 編集しているときに行うことができます。ポリシー・セットで必要となるトークンおよびメッセージ・パーツの、 アプリケーション固有のバインディングも構成できます。

トラブルの回避 トラブルの回避: このページで「鍵ストア」および 「鍵」プロパティーの値を指定する前に、生成プログラムに提供する 鍵ストア/別名情報と、コンシューマーに提供する鍵ストア/別名情報は、それぞれ 異なる目的に使用されることを理解しておく必要があります。主な違いは、X.509 コールバック・ハンドラーの別名に関するものです。gotcha
生成プログラム
暗号化生成プログラムと関連して 使用される場合、生成プログラム用に提供される別名は、 メッセージを暗号化するための公開鍵を取得するのに使用されます。パスワードは不要です。暗号化生成プログラム と関連付けられたコールバック・ハンドラーに入力された別名 は、パスワードなしでアクセス可能でなければなりません。これが意味するのは、 別名に関連付けられた秘密鍵情報 が鍵ストア内にあってはならないということです。シグニチャー生成プログラムと関連して 使用される場合、生成プログラム用に提供された別名は、 メッセージに署名するための秘密鍵を取得するのに使用されます。 この場合、パスワードが必要です。
[2013 年 10 月更新]
トラブルの回避 トラブルの回避: メッセージの署名に使用される別名はパスワードを必要とし、メッセージの暗号化に使用される別名ではパスワードがないことを必要としているため、シグニチャー生成プログラムと暗号生成プログラムの両方に同じ別名を使用することはできません。gotcha
[2013 年 10 月更新]
コンシューマー
暗号化コンシューマーと関連して 使用される場合、コンシューマー用に提供される別名は、 メッセージを暗号化解除するための秘密鍵を取得するのに使用されます。パスワードが必要になります。

シグニチャー・コンシューマー と関連して使用される場合、コンシューマー用に提供される別名は、 BinarySecurityToken として SOAP セキュリティー・ヘッダーで渡されない X.509 証明書 を解決するのに使用される公開鍵を取得するために厳格に使用されます。パスワードは不要です。

シグニチャー・コンシューマー と関連付けられたコールバック・ハンドラーに入力された別名 は、パスワードなしでアクセス可能でなければなりません。これが意味するのは、 別名に関連付けられた秘密鍵情報 が鍵ストア内にあってはならないということです。

X.509 証明書が SOAP セキュリティー・ヘッダーで BinarySecurityToken として渡されない場合は、その X.509 証明書の解決に使用する SOAP セキュリティー・ヘッダーの Signature エレメント 内の KeyInfo エレメントに、SecurityTokenReference が 表示されます。使用可能なメソッドは、鍵 ID、X.509 発行者名 および発行者シリアル番号、およびサムプリントです。 署名コンシューマーと関連付けられた X.509 トークン・コンシューマー用に鍵ストア/別名が構成されている場合、 コンシューマーは、メッセージの外の X.509 証明書を解決するためにこれら 3 つのメソッド を受け入れます。X.509 トークン・コンシューマーは、メッセージの外の証明書を鍵ストア内のエントリーに動的に解決しません。 使用される証明書は、構成時に認識され、 X.509 トークン・コンシューマー・コールバック・ハンドラーにハードコーディングされていなければなりません。

X.509 証明書がメッセージの外で解決されるとき、 汎用バインディングの使用時には複数の証明書を解決できますが、アプリケーション固有バインディングの使用時には 1 つの証明書しか解決できません。 アプリケーション固有バインディングが使用される場合にはメッセージの外で 1 つの証明書しか解決できない理由は、 アプリケーション固有バインディングでは、使用できる X.509 トークン・コンシューマーが 1 つのみであるためです。 使用する X.509 トークン・コンシューマーが 1 つのみであるため、使用する別名が 1 つのみで、1 つの証明書しか解決できません。 例えば、X.509 トークン・コンシューマーが証明書 A 用に構成されている 場合、クライアント A が証明書 A の keyIdentifier を 送信すると、この証明書は取得可能です。しかし、クライアント B が 証明書 B の keyIdentifier を送信すると、この証明書は取得可能でなく、 メッセージは拒否されます。

汎用バインディングが使用される場合には、複数の X.509 トークン・コンシューマーを作成し、それら (鍵ストア/別名) に異なる証明書をそれぞれ構成することができます。 解決する証明書に関連付けられたすべての X.509 トークン・コンシューマーが、 バインディング内の署名パーツ構成の署名鍵情報に割り当てられます。

BinarySecurityToken として SOAP セキュリティー・ヘッダー で X.509 証明書が送信されると、署名コンシューマーと関連付けられた X.509 トークン・コンシューマー に構成された鍵ストア/別名がある場合、コンシューマーに構成された証明書 が、メッセージで渡された証明書と比較されます。 それらが一致しない場合、メッセージは拒否されます。この動作 は JAX-RPC と異なります。X.509 トークン・コンシューマーに構成された 別名と関連付けられた証明書は、インバウンド証明書の信頼性を評価するためには 使用されません。その目的のためには、トラストストアおよび証明書ストアのみ が使用されます。

署名コンシューマーと関連付けられた X.509 トークン・コンシューマー に構成された証明書が KeyInfo 解決のために使用可能である が、メッセージで渡された一致しない X.509 証明書 を拒否しないようにしたい場合は、 以下のカスタム・プロパティーを X.509 トークン・コンシューマー・コールバック・ハンドラーに追加できます。
com.ibm.wsspi.wssecurity.consumer.callbackHandlerKeystoreLimitsAccess=false
[2013 年 10 月更新]
トラブルの回避 トラブルの回避: メッセージの暗号化解除に使用される別名はパスワードを必要とし、シグニチャーの検査に使用される別名ではパスワードがないことを必要としているため、シグニチャー・コンシューマーと暗号化コンシューマーの両方に同じ別名を使用することはできません。gotcha
[2013 年 10 月更新]
汎用のセル・レベルのバインディングを編集中にこの管理コンソール・ページを 表示するには、以下のアクションを実行します。
  1. 「サービス」 > 「ポリシー・セット」 > 「デフォルト・ポリシー・セット・バインディング (Default policy set bindings)」とクリックします。このバインディング・パネルには、 デフォルトのバインディングとして設定されたバインディング (例えば、プロバイダーのサンプル・バインディング) が示されます。
  2. このデフォルト・バインディングを編集するには、「サービス (Services)」 > 「ポリシー・セット (Policy sets)」 > 「汎用プロバイダーのポリシー・セット・バインディング (General provider policy set bindings)」とクリックします。
  3. 最初のステップで判定したデフォルトのバインディングの名前をクリック します。例えば、プロバイダー・サンプルです。
  4. 「ポリシー」テーブルで「WS-Security」ポリシーをクリックします。
  5. 「メイン・メッセージ・セキュリティー・ポリシー・バインディング (Main message security policy bindings)」セクションで、「認証と保護 (Authentication and protection)」リンクをクリックします。
  6. 「保護トークン (Protection tokens)」セクションまたは「認証トークン (Authentication tokens)」セクションで「name_of_token」リンクをクリックします。
  7. 「コールバック・ハンドラー」リンクをクリックします。
ポリシー・セットが必要とするトークンおよびメッセージ・パーツのアプリケーション固有のバインディングの構成中にこの管理コンソール・ページを表示するには、 以下のアクションを実行します。
  1. 「アプリケーション」 > 「アプリケーション・タイプ」 > 「WebSphere エンタープライズ・アプリケーション」とクリックします。
  2. Web サービスを含むアプリケーションを選択します。 このアプリケーションには、サービス・プロバイダーまたはサービス・クライアントが含まれている必要があります。
  3. 「Web サービス・プロパティー」セクションで「サービス・プロバイダーのポリシー・セットおよびバインディング (Service provider policy sets and bindings)」リンクまたは「サービス・クライアントのポリシー・セットおよびバインディング (Service client policy sets and bindings)」をクリックします。
  4. バインディングを選択します。 事前に、ポリシー・セットを関連付け、アプリケーション固有のバインディングを割り当てておく必要があります。
  5. 「ポリシー」テーブルで「WS-Security」ポリシーをクリックします。
  6. 「メイン・メッセージ・セキュリティー・ポリシー・バインディング (Main message security policy bindings)」セクションで、「認証と保護 (Authentication and protection)」リンクをクリックします。
  7. 「保護トークン (Protection tokens)」セクションまたは「認証トークン (Authentication tokens)」セクションで「name_of_token」リンクをクリックします。
  8. 「コールバック・ハンドラー」リンクをクリックします。

この管理コンソール・ページは、Java API for XML Web Services (JAX-WS) アプリケーションにのみ適用されます。

「コールバック・ハンドラー」に表示されるフィールドは、構成されるトークンによって異なるものになります。 保護のためにジェネレーターないしコンシューマー・トークンを構成しているか、 あるいは認証のためにインバウンド・トークンまたはアウトバウンド・トークンを構成しているかに応じて、 このパネル上の各セクションや各フィールドには、 このトピックで説明されているフィールドの一部またはすべてが表示されます (各フィールドの説明を参照)。

クラス名

「クラス名」セクション内のフィールドは、あらゆるタイプのトークン構成で使用できます。

コールバック・ハンドラーに使用するクラス名を指定します。 通常の操作では、「組み込みデフォルトの使用 (Use built-in default)」 オプションを選択します。 「カスタムの使用」オプションを使用するのは、カスタム・トークン・タイプを使用する場合のみです。

Kerberos カスタム・トークン・タイプの場合、トークン生成プログラムの構成には、クラス名 com.ibm.websphere.wssecurity.callbackhandler.KRBTokenGenerateCallbackHandler を使用します。トークン・コンシューマーの構成には、com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler を使用します。

組み込みデフォルトの使用

クラス名にデフォルト値を使用するように指定します。 このラジオ・ボタンを選択した場合、 デフォルト値 (フィールドに表示されます) がクラス名に使用されます。 この名前は、コールバック・ハンドラーがトークン生成プログラム用であるか トークン・コンシューマー用であるか、およびトークン・タイプが何かによって決まります。 このオプションは「カスタムの使用」オプションと同時には使用できません。

カスタムの使用

クラス名にカスタム値を使用するように指定します。 カスタム・クラス名を使用するには、このラジオ・ボタンを選択し、フィールドに名前を入力してください。

この入力フィールドで使用できるデフォルト値はありません。 次のテーブル内の情報を使用すると、この値が決まります。

表 1. コールバック・ハンドラーのカスタム・クラス名および関連トークン・タイプ. コールバック・ハンドラーは、セキュリティー・トークンがメッセージ・ヘッダーからどのように取得されるのかを 決定します。
トークン・タイプ コンシューマー (consumer) またはジェネレーター (generator) コールバック・ハンドラーのクラス名
UsernameToken コンシューマー (consumer) com.ibm.websphere.wssecurity.callbackhandler.UNTConsumeCallbackHandler
UsernameToken ジェネレーター (generator) com.ibm.websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler
X509Token コンシューマー (consumer) com.ibm.websphere.wssecurity.callbackhandler.X509ConsumeCallbackHandler
X509Token ジェネレーター (generator) com.ibm.websphere.wssecurity.callbackhandler.X509GenerateCallbackHandler
LTPAToken/LTPAPropagationToken コンシューマー (consumer) com.ibm.websphere.wssecurity.callbackhandler.LTPAConsumeCallbackHandler
LTPAToken/LTPAPropagationToken ジェネレーター (generator) com.ibm.websphere.wssecurity.callbackhandler.LTPAGenerateCallbackHandler
SecureConversationToken コンシューマー (consumer) com.ibm.ws.wssecurity.impl.auth.callback.SCTConsumeCallbackHandler
SecureConversationToken ジェネレーター (generator) com.ibm.ws.wssecurity.impl.auth.callback.WSTrustCallbackHandler

このボタンは「組み込みデフォルトの使用 (Use built-in default)」オプションと同時には使用できません。

証明書 (ジェネレーター)

「証明書」セクション内の各フィールドは、保護トークンを構成している場合に使用できます。 ジェネレーター・トークンの場合は、リストからいずれかの証明書ストアをクリックして選択するか、 「新規」ボタンをクリックして証明書ストアを追加することができます。

証明書 (コンシューマー)

「証明書」セクション内の各フィールドは、保護トークンを構成している場合に使用できます。 コンシューマー・トークンの場合は、「任意証明書のトラスト (Trust any certificate)」オプション または「証明書ストア」オプションを使用して、証明書ストアを 構成できます。

証明書 - 任意証明書のトラスト (コンシューマー)

このオプションは、トークン・コンシューマーにのみ適用されます。このオプション は、システムがすべての証明書を信頼し、特定の証明書ストアを定義しない ことを示します。このオプションは 「証明書ストア」オプションと同時には使用できません。

証明書 - 証明書ストア (コンシューマー)

このオプションは、トークン・コンシューマーにのみ適用されます。 このオプションを使用して、中間証明書を含む 証明書ストア・コレクションを指定します。これには証明書失効リスト (CRL) を含むこともできます。入力フィールドに指定された 証明書ストアをトラストするには、このオプションを選択してください。このオプションは「任意証明書のトラスト」オプションと同時には使用できません。 「証明書ストア」オプションを選択すると、「新規」ボタンが使用可能になり、新しい証明書ストア およびトラステッド・アンカー・ストアを構成できるようになります。

証明書ストアのフィールドの値は デフォルト値 None に設定することができます。しかし、トラステッド・アンカー・ストア値は特定の値に設定 しなければなりません。デフォルト値はありません。「任意証明書のトラスト」オプションが選択されていない場合、 トラステッド・アンカーが必要です。

基本認証

「基本認証」セクション内の各フィールドは、 LTPA 伝搬トークンではない認証トークンを構成する場合に使用できます。

Kerberos カスタム・トークン・タイプの場合、Kerberos にログインするには、 「基本認証」セクションを完了する必要があります。

ユーザー名

認証したいユーザー名を指定します。

パスワード

認証されるパスワードを指定します。 この入力フィールドに、認証用のパスワードを入力します。

確認パスワード

確認したいパスワードを入力します。

鍵ストア

鍵ストアのフィールドは、 ランタイムで不要であると判断された場合は使用不可になります。

「鍵ストア名」リスト内では、「カスタム」をクリックして、カスタム鍵ストアを定義することもできますし、外部で定義された鍵ストア名のいずれかをクリックすることもできます。 鍵ストアが必要ないときは、「なし」をクリックしてください。

鍵ストア - 名前

使用する鍵ストアの名前を指定します。

このメニューから鍵ストアの名前をクリックするか、以下のいずれかの値を選択します。
なし
鍵ストアを使用しないよう指定します。
カスタム
ユーザー定義の鍵ストアを使用することを指定します。カスタムの鍵ストアと鍵設定を構成するには、「カスタム鍵ストア構成 (Custom keystore configuration)」リンクをクリックしてください。

鍵

構成された鍵ストアから取り出される鍵の属性を 指定します。「鍵」セクションにあるフィールドの一部は、 ランタイムで不要であると判断された場合は使用不可になります。

「鍵ストア」に対して、中央管理されている鍵ストアが選択された場合、 「鍵」セクションにあるフィールドは使用可能になります。

名前

使用する鍵の名前を指定します。 このリストには、選択された中央管理される鍵ストア内にある鍵が含まれます。 使用したい鍵の名前を選択するか、または、鍵を使用しない場合は「(なし)」を選択します。

別名

選択された鍵の別名を表示します。

パスワード

使用する鍵のパスワードを指定します。 このフィールドは、ランタイムで必要であると判断された場合のみ使用可能になります。

非対称暗号ジェネレーターまたは対称シグニチャー・コンシューマーには、公開鍵のパスワードを設定できません。 このトピックの最初のほうにある『トラブルの回避』を 参照してください。

確認パスワード

使用する鍵の確認パスワードを指定します。 このフィールドは、ランタイムで必要であると判断された場合のみ使用可能になります。

非対称アウトバウンド暗号またはインバウンド・シグニチャーには、公開鍵の鍵確認パスワードを指定しないでください。

鍵ストア - カスタム鍵ストア構成

カスタム鍵ストアを作成するためのリンクを指定します。 このリンクをクリックするとパネルが開き、そこでカスタム鍵ストアを構成できます。

鍵ストア・パスワード

鍵ストア・ファイルへのアクセスに使用するパスワードを指定します。

鍵ストア・パス

鍵ストア・ファイルのロケーションを指定します。

パス名には、${USER_INSTALL_ROOT} を使用してください。 この変数が、ご使用のマシンの製品のパスに展開されるためです。 この変数で使用されるパスを変更 するには、「環境」>「WebSphere 変数」をクリックし、 USER_INSTALL_ROOT をクリックします。

鍵ストア・タイプ

鍵ストア・ファイル・フォーマットのタイプを指定します。

このフィールドに、次の値のいずれかを選択します。
JKS
鍵ストアが Java Keystore (JKS) フォーマットを使用している場合、このオプションを使用します。
JCEKS
Java Cryptography Extension が Software Development Kit (SDK) で構成されている場合には、このオプションを使用します。 デフォルトの IBM® JCE が、アプリケーション・サーバー内で構成されます。このオプションは、Triple DES 暗号化を使用することによって、保管された秘密鍵の保護をより強力にします。
[z/OS] JCERACFKS
証明書が SAF 鍵リングに保管される場合は、JCERACFKS を使用します (z/OS® の場合のみ)。
PKCS12KS (PKCS12)
鍵ストア・ファイルが PKCS#12 ファイル・フォーマットを使用する場合、このオプションを使用します。

カスタム・プロパティー

「カスタム・プロパティー」セクション内のフィールドは、あらゆるタイプのトークン構成で使用できます。

コールバック・ハンドラーが必要とするカスタム・プロパティーを、名前と値のペアを使用して追加できます。

JAX-WS プログラミング・モデルの使用時に署名者証明書の暗号化を実装するには、暗号化トークン生成プログラムのコールバック・ハンドラーに com.ibm.wsspi.wssecurity.token.cert.useRequestorCert という名前のカスタム・プロパティーを追加して、値を true に設定します。 この実装では、SOAP 応答の暗号化を求める SOAP 要求の署名者証明書を使用します。このカスタム・プロパティーは、応答ジェネレーターによって使用されます。

OASIS Web Services Security Specification for Kerberos Token Profile V1.1 に 基づく Kerberos カスタム・トークンの場合、トークン生成用に com.ibm.wsspi.wssecurity.krbtoken.clientRealm プロパティーを指定します。これにより、 クライアントと関連付けられた Kerberos レルムの名前が指定され、Kerberos クライアント・レルムは Kerberos ログイン を開始できるようになります。指定されない場合、デフォルトの Kerberos レルム名が使用されます。 このプロパティーは、単一の Kerberos レルム環境用のオプションです。

Kerberos カスタム・プロパティー com.ibm.wsspi.wssecurity.krbtoken.loginPrompt の 値が true の場合、Kerberos ログインが可能になります。 デフォルト値は false です。このプロパティーはオプションです。

JAX-WS プログラミング・モデルのユーザー名トークンを構成する際、 リプレイ・アタックから保護するために、コールバック・ハンドラー構成に以下の カスタム・プロパティーを追加することを強くお勧めします。 これらのカスタム・プロパティーは、メッセージ認証で nonce およびタイム・スタンプを 使用可能にし、検査します。
プロパティー名 (ジェネレーター) プロパティー値
com.ibm.wsspi.wssecurity.token.username.addNonce true
com.ibm.wsspi.wssecurity.token.username.addTimestamp true
プロパティー名 (コンシューマー) プロパティー値
com.ibm.wsspi.wssecurity.token.username.verifyNonce true
com.ibm.wsspi.wssecurity.token.username.verifyTimestamp true

名前

使用するカスタム・プロパティーの名前を指定します。

カスタム・プロパティーは、最初のうちはこの列で表示されません。 カスタム・プロパティーに対するアクションを、以下の中から選んでクリックしてください。

ボタン 結果のアクション
新規 新規のカスタム・プロパティー・エントリーを作成します。 カスタム・プロパティーを追加するには、その名前と値を入力してください。
削除 選択したカスタム・プロパティーを削除します。

値

使用するカスタム・プロパティーの値を指定します。 「値」入力フィールドで、カスタム・プロパティーの値の入力または削除を行えます。



ファイル名: uwbs_wsspsbch.html