SAML holder-of-key 対称鍵トークン用のクライアントおよびプロバイダーのバインディングの構成
SAML holder-of-key トークン用に、クライアントおよびプロバイダーのポリシー・セットの関連付けおよび バインディングを構成します。この構成シナリオ では、対称鍵を使用します。
始める前に
このタスクについて
SAML トークン・ポリシー は、アプリケーション・サーバー内で CustomToken 拡張によって定義されます。CustomToken 拡張 を作成するには、クライアントおよびプロバイダーのバインディング文書中の カスタム・プロパティーで SAML トークン構成パラメーターを 定義します。それらのカスタム・プロパティーに関する本質的な構成が 汎用バインディング Saml HoK Symmetric Client sample および Saml HoK Symmetric Provider sample に 含まれています。クライアントおよびプロバイダーのこれらのサンプル・バインディング は、SAML11 と SAML20 両方のトークン・タイプ構成情報を含んでいるため、 SAML11 ポリシー・セットと SAML20 ポリシー・セットの両方と共に使用できます。 SAML トークンをどのように実装する予定なのかに基づいて、 インストールされたバインディング・サンプル中のプロパティー値を変更する必要があります。プロパティーおよび プロパティー値の例は、手順中に示されています。
バインディング・サンプルの変更の手順は、Web サービス・クライアント・ポリシー・セットの関連付けの構成で始まり、次に Web サービス・プロバイダー・ポリシー・セットの関連付けを構成します。手順で示されている例は、サンプル Web サービス・アプリケーション JaxWSServicesSamples を使用します。
手順
- 2 つのデフォルト・ポリシー・セット SAML20 HoK Symmetric WSSecurity default および Username WSHTTPS default をインポートします。
- 「サービス」 > 「ポリシー・セット (Policy sets)」 > 「アプリケーション・ポリシー・セット (Application policy sets)」をクリックします。
- 「インポート」をクリックします。
- 「デフォルトのリポジトリー」を選択します。
- 2 つのデフォルト・ポリシー・セットを選択します。
- 「OK」をクリックして、それらのポリシー・セットをインポートします。
- トラスト・クライアントのポリシー・セットを関連付けます。「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>
「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。 ポリシー・セットの関連付けと切り離し、およびトラスト・クライアント・バインディングの構成に
関連するステップは、外部 STS へのアクセスにアプリケーション固有のバインディングを使用する場合にのみ
必要となります。外部 STS へのアクセスに汎用バインディングを使用する場合は、
これらのステップをスキップして、STS との通信の構成に関するステップへ進んでください。
- Web サービス・クライアント・リソースのチェック・ボックスを選択します。
- 「クライアント・ポリシー・セットの関連付け」をクリックします。
- ポリシー・セット Username WSHTTPS default を選択します。
- トラスト・クライアント・バインディングを構成します。
- Web サービス・クライアント・リソースをもう一度選択します。
- 「サービス・クライアントのポリシー・セットおよびバインディング (Service client policy sets and bindings)」パネルで、「バインディングの割り当て (Assign Binding)」をクリックします。
- 「新規のアプリケーション固有バインディング」をクリックして、アプリケーション固有のバインディングを作成します。
- 新規のアプリケーション固有バインディングのバインディング構成名を指定します。 この例では、バインディング名は SamlTCSample です。
- 「SSL トランスポート」ポリシー・タイプをバインディングに追加します。 オプションで、NodeDefaultSSLSettings 設定を変更できます。「セキュリティー」>「SSL 証明書および鍵管理」>「SSL 構成」> NodeDefaultSSLSettings とクリックします。
- 「WS-Security」ポリシー・タイプをバインディングに追加して、
認証設定を変更します。
- 「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」> JaxWSServicesSamples > 「サービス・クライアントのポリシー・セットおよびバインディング」> SamlTCSample > 「追加」>「WS-Security」>「認証と保護」> request:uname_token と クリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」を選択します。
- Web サービス・クライアントが外部 STS に認証されるための ユーザー名とパスワード (およびパスワードを確認) を指定します。
- 「OK」をクリックしてから「保存」をクリックします。
- バインディング設定が保存されたら、
「サービス・クライアントのポリシー・セットおよびバインディング」パネルに戻って、
ポリシー・セットとバインディングを切り離します。
- 「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」> 「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・クライアント・リソースのチェック・ボックスをクリックします。
- 「クライアント・ポリシー・セットの切り離し」をクリックします。
- 無制限管轄ポリシー・ファイルをダウンロードします。 SAML20 HoK Symmetric WSSecurity default セキュリティー・ポリシー が使用する 256 ビット暗号鍵サイズは、無制限 Java Cryptography Extension (JCE) ポリシー・ファイルを必要とします。詳しくは、『Web Services Security の調整』トピックで、無制限 JCE ポリシー・ファイルの使用に関するセクションを参照してください。
- SAML20 HoK Symmetric WSSecurity default ポリシー・セット を関連付け、Saml HoK Symmetric Client sample バインディングをクライアント・リソース
に割り当てます。
- 「アプリケーション」 > 「アプリケーション・タイプ」 > 「WebSphere エンタープライズ・アプリケーション」 > 「JaxWSServicesSamples」 > 「サービス・クライアントのポリシー・セットおよびバインディング (Service client policy sets and bindings)」とクリックします。
- Web サービス・クライアント・リソースを選択します。
- 「クライアント・ポリシー・セットの関連付け」をクリックします。
- ポリシー・セット SAML20 HoK Symmetric WSSecurity default を選択します。
- Web サービス・クライアント・リソースをもう一度選択します。
- 「サービス・クライアントのポリシー・セットおよびバインディング (Service client policy sets and bindings)」パネルで、「バインディングの割り当て (Assign Binding)」をクリックします。
- Saml HoK Symmetric Client sample 汎用バインディングを 選択します。
- 「保存」をクリックします。
- STS エンドポイント URL と、STS への認証を行うためのユーザー名およびパスワードを
構成します。
- 「アプリケーション」 > 「アプリケーション・タイプ」 > 「WebSphere エンタープライズ・アプリケーション」 > 「JaxWSServicesSamples」 > 「サービス・クライアントのポリシー・セットおよびバインディング (Service client policy sets and bindings)」 > 「Saml HoK Symmetric Client のサンプル (Saml HoK Symmetric Client sample)」 > 「WS-Security」 > 「認証と保護 (Authentication and protection)」とクリックします。
- 保護トークンの表で「gen_saml20token」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- stsURI プロパティーを変更して、STS エンドポイントを指定します。 外部 STS を使用せず、対称鍵での holder-of-key アサーションを アプリケーション・サーバーに自己発行させる場合は、 このステップを実行せずにステップ 8i に進んでください。
- 必要な場合は、wstrustClientPolicy プロパティーを 変更し、値を Username WSHTTPS default に変えます。
- wstrustClientBinding プロパティー を変更して、前の一連のステップで作成されたアプリケーション固有のバインディングに 一致するよう値を変更します。この例では、値は SamlTCSample です。 このステップは、WS-Trust クライアント・ポリシー・セットを関連付けます。WS-Trust クライアントを使用してサーバー が STS から SAML トークンを自動的に要求しないようにしたい場合、この ステップをスキップすることができます。
- アプリケーション・サーバーがバインディングをどのように検索するのかを制御する wstrustClientBindingScope プロパティーの値を変更します。 このプロパティーの値は application または domain のどちらかに設定します。 値が domain に設定されている場合、アプリケーション・サーバーは、汎用バインディング文書が含まれているファイル・システム・ロケーションで wstrustClientBinding を検索します。値が application に設定されている場合、 アプリケーション・サーバーは、アプリケーション固有のバインディング文書が含まれているファイル・システム・ロケーションで wstrustClientBinding を検索します。 wstrustClientBindingScope プロパティーが指定されていない 場合、アプリケーション・サーバーのデフォルト動作は、まず、アプリケーション固有の バインディングを検索した後、汎用バインディングを検索するという動作です。wstrustClientBinding が 見つからない場合、アプリケーション・サーバーはデフォルトのバインディングを使用します。
- confirmationMethod プロパティーの値が Holder-of-key であることを確認します。
- keyType プロパティーの値が http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey または symmetrickey 別名であることを確認します。 wstrustClientWSTNamespace プロパティーによって、symmetrickey 別名の解釈方法が決まります。 この場合には、WS-Trust 1.3 名前空間に設定されていると想定しています。 値が WS-Trust 1.2 の場合には、symmetrickey 別名は http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey と解釈されます。
- オプション: アプリケーション・クライアントと同じである、デフォルトのトラスト・クライアント SOAP バージョン を変更することができます。カスタム・プロパティー wstrustClientSoapVersion を 値 1.1 に設定して SOAP バージョン 1.1 に変更するか、または、 このプロパティーを値 1.2 に設定して SOAP バージョン 1.2 に 変更します。
- オプション: 外部 STS を使用しない場合で、アプリケーション・サーバーが対称鍵を使用して holder-of-key アサーション
を自己発行するようにしたい場合は、recipientAlias カスタム・プロパティーをターゲット・サービスの鍵の別名の値に設定します。 このプロパティーを指定すると、ターゲット・サービス用の対称鍵が保護されます。
この別名は、SAML 発行者の構成済みトラストストアに含まれる有効な鍵の別名でなければなりません。
TrustStorePath プロパティーは、トラストストア・ファイルの場所を指定します。
TrustStorePath プロパティーは、アプリケーション・サーバーの SAMLIssuerConfig.properties ファイル
に定義されます。例えば、
WebSphere アプリケーション・サーバーで、
サーバー・レベルの SAMLIssuerConfig.properties ファイルの場所は、以下のようになります。
WebSphere アプリケーション・サーバーで、 セル・レベルのこのファイルの場所は、以下のようになります。app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/nodes/$NODENAME/servers/$SERVERNAME/SAMLIssuerConfig.properties
app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/sts/SAMLIssuerConfig.properties
- 「適用」と「保存」をクリックします。
- オプション: wstrustClientBinding 構成をさらに変更する必要があり、 wstrustClientBinding プロパティーがアプリケーション固有のバインディングを指している場合は、 変更を完了する前に、アプリケーション固有のバインディングを Web サービス・クライアントに関連付ける 必要があります。関連付けは一時的です。前のステップで詳述したように、 変更が完了したら、変更したアプリケーション固有のバインディングを Web サービス・クライアントから 切り離すことができます。
- SSL 証明書を外部 STS からインポートします。
- 「セキュリティー」>「SSL 証明書および鍵管理」 >「エンドポイント・セキュリティー構成の管理」> server_or_node_endpoint > 「鍵ストアおよび証明書」> NodeDefaultTrustStore >「署名者証明書」とクリックします。
- 「ポートから取得」をクリックします。
- 外部 STS サーバーのホスト名およびポート番号を指定し、 証明書に別名を割り当てます。 SSL STS ポートを使用してください。
- 「署名者情報の取得」をクリックします。
- 「適用」および「保存」をクリックして、 検索した証明書を NodeDefaultTrustStore オブジェクトにコピーします。
- ポリシー・セットの関連付けの変更が有効になるように、Web サービス・クライアント・アプリケーションを 再始動します。
- SAML20 HoK Symmetric WSSecurity default ポリシー・セットを Web サービス・プロバイダーに関連付けます。
- 無制限管轄ポリシー・ファイルをダウンロードします。 SAML20 HoK Symmetric WSSecurity default セキュリティー・ポリシー が使用する 256 ビット暗号鍵サイズは、無制限 Java Cryptography Extension (JCE) ポリシー・ファイルを必要とします。詳しくは、『Web Services Security アプリケーションの調整』トピックで、無制限 JCE ポリシー・ファイルの使用に関するセクションを参照してください。
- Saml HoK Symmetric Provider sample 汎用バインディング を割り当てます。
- 「アプリケーション」 > 「アプリケーション・タイプ」 > 「WebSphere エンタープライズ・アプリケーション」 > 「JaxWSServicesSamples」 > 「サービス・プロバイダーのポリシー・セットおよびバインディング (Service provider policy sets and bindings)」 > 「Saml HoK Symmetric Provider のサンプル (Saml HoK Symmetric Provider sample)」 > 「WS-Security」 > 「認証と保護 (Authentication and protection)」とクリックします。
- 認証トークンの表で「con_saml20token」をクリックします。
- 「コールバック・ハンドラー」リンクをクリックします。
- 以下のステップで説明するように、このパネルを使用して、組み込み対称鍵 暗号化解除構成と、外部 STS への SAML トークン発行者デジタル署名 検証を構成します。
- 組み込み秘密鍵を暗号化解除するためのバインディング・データを構成するか、
公開鍵によって受信者から保護される SAML アサーションを
構成します。STS は受信側の公開鍵にアクセスできる必要があります。
暗号化解除のための鍵を構成するには、次の 2 つのオプションがあります。
- オプション 1: 以下のように、鍵ストアおよび秘密鍵を構成します。
- 「鍵ストア名」フィールドの値が custom であることを検証します。
- 鍵ストア構成の表示および編集を行うため、「カスタム鍵ストア構成」をクリックします。
- 鍵ファイルの初期値が app_server_root/etc/ws-security/samples/enc-service.jceks であることを検証します。
- オプション 2: 以下のように、コールバック・ハンドラーにカスタム・プロパティーを設定します。
カスタム・プロパティー 値 keyStorePath 鍵ストアのロケーション keyStoreType 一致する鍵ストア・タイプ。 サポートされている鍵ストア・タイプ は、jks、jceks、および pkcs12 です。
keyStorePassword 鍵ストアのパスワード keyAlias SAML 暗号化に使用される公開鍵の別名 keyName SAML 暗号化に使用される公開鍵の名前 keyPassword 鍵名のパスワード
- オプション 1: 以下のように、鍵ストアおよび秘密鍵を構成します。
- 外部 STS 署名証明書をトラストストアに追加します。
このステップは、SAML アサーションが STS に
よって署名され、かつ signatureRequired カスタム・プロパティー
が指定されていないか、値が true の場合に必要です。このトラストストア
はサービス・プロバイダー用に構成されています。
- カスタム・プロパティー trustStoreType を、 鍵ストア・タイプに一致するように設定します。サポートされている鍵ストア・タイプは、jks、jceks、 および pkcs12 です。
- カスタム・プロパティー trustStorePath を鍵ストア・ファイル・ロケーションに 設定します。例えば、app_server_root/etc/ws-security/samples/dsig-issuer.jceks です。 ファイル dsig_issuer.jceks は、WebSphere Application Server のインストール時に 提供されるものではなく、作成する必要があります。
- カスタム・プロパティー trustStorePassword を、 ストア・パスワードのエンコードされた値に設定します。 パスワードは、カスタム・プロパティーとして保管され、 管理コンソールによってエンコードされます。
- オプション: カスタム・プロパティー trustedAlias を、 例えば samlissuer といった値に設定することができます。複数の異なる署名者によって SAML トークンが署名される場合、 例えば、STS が複数の異なるトークン・プロバイダーにトークン要求を委任し、それぞれの プロバイダーが証明書を使用して署名する場合には、trustedAlias プロパティーを設定しないでください。このカスタム・プロパティーが指定されていない場合、Web サービス・ランタイム環境は、SAML アサーション内の署名証明書パスワードを使用して署名を検証し、その後、構成されたトラストストアに対して証明書を検証します。
- オプション: カスタム・プロパティー trustAnySigner を 値 true に設定して、署名者証明書検証を許可しないようにできます。 証明書構成設定「すべてを信頼」は、SAML 署名検証の目的に関しては 無視されます。
- オプション: カスタム・プロパティー signatureRequired を false に 設定して、デジタル署名検証が行われないようにすることができます。ただし、セキュリティーの観点から推奨されるのは、SAML アサーションには署名が必要であり、常に発行者デジタル署名検証が必要であるようにすることです。
- オプション: 受信者の構成で、発行者名か、SAML アサーション中の発行者の証明書 SubjectDN のどちらか、または両方
を検証するようにできます。 信頼された発行者名のリストまたは
信頼された証明書 SubjectDN のリストを作成するか、または、両タイプの
リストを作成します。発行者名リストおよび SubjectDN リストの両方を
作成すると、発行者名と SubjectDN の両方が検証されます。受け取った SAML 発行者名
または署名者 SubjectDN が信頼リスト中にない場合、SAML 検証
は失敗し、例外が発行されます。 次の例では、
信頼された発行者および信頼された SubjectDN のリストの作成方法を示します。
信頼された発行者名ごとに、trustedIssuer_n (n は 正整数) を使用します。信頼された SubjectDN ごとに、trustedSubjectDN_n (n は 正整数) を使用します。両方のタイプのリストを作成する場合、両方のリスト中の整数 n は、同じ SAML アサーションに 関しては一致している必要があります。整数 n は 1 から 始まり、1 ずつ増えます。
この例では、発行者名 WebSphere/samlissuer の SAML アサーションを、署名者の SubjectDN に関係なく信頼します。そのため、次のカスタム・プロパティーを追加します。<properties value="WebSphere/samlissuer" name="trustedIssuer_1"/>
加えて、署名者の SubjectDN が ou=websphere,o=ibm,c=us の場合、IBM/samlissuer によって発行された SAML アサーションを信頼します。そのため、以下のカスタム・プロパティーを追加します。<properties value="IBM/samlissuer" name="trustedIssuer_2"/> <properties value="ou=websphere,o=ibm,c=us" name="trustedSubjectDN_2"/>
trustedIssuer_n 値が定義されていない場合、デフォルトで、WebSphere Application Server は、すべての SAML 発行者を信頼します。 このデフォルト動作を把握しておかないと、許可された STS によって発行された SAML アサーションを誤って受け入れてしまう可能性があります。
- オプション: SAML トークンの署名を検査するために使用できる、非 root 認証局 (CA) 証明書のリストを追加できます。 非 root 証明書を追加するには、X509PATH_n という名前のカスタム・プロパティーを追加します (n は非 root 証明書の値を表す非負整数)。
- オプション: SAML トークンの署名を検証するために使用できる、証明書失効リスト (CRL) のリストを追加できます。 CRL を追加するには、CRLPATH_n という名前のカスタム・プロパティーを追加します (n は CRL の値を表す非負整数)。
- 「適用」と「保存」をクリックします。
- オプション: 呼び出し元のバインディングを
構成して、要求者識別を表すために SAML トークンを選択することができます。 Web Services Security ランタイム環境は、指定された JAAS ログイン構成を使用して、ユーザー・セキュリティー名およびグループ・メンバーシップ・データをユーザー・レジストリーから取得します。その際、SAML トークン NameId または NameIdentifier をユーザー名として使用します。
- 「アプリケーション」 > 「アプリケーション・タイプ」 > 「WebSphere エンタープライズ・アプリケーション」 > 「JaxWSServicesSamples」 > 「サービス・プロバイダーのポリシー・セットおよびバインディング (Service provider policy sets and bindings)」 > 「Saml HoK Symmetric Provider のサンプル (Saml HoK Symmetric Provider sample)」 > 「WS-Security」 > 「呼び出し元 (Callers)」とクリックします。
- 呼び出し元構成を作成するため、「新規」を クリックします。
- 「名前」を指定します (例: caller)。
- 「呼び出し元識別ローカル・パーツ」の値を入力します。 例えば、http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0 です。 これは、関連付けられた WS-Security ポリシー内の CustomToken エレメントのローカル・パーツです。
- 「適用」と「保存」をクリックします。
- ポリシー・セットの関連付けの変更が有効になるように、Web サービス・プロバイダー・アプリケーションを再始動します。
タスクの結果
サブトピック
SAML 発行者構成プロパティー
新規の自己発行 SAML トークンを作成する場合、構成プロパティーを指定して、トークンの構成方法を制御することができます。構成プロパティーは、プロバイダー側情報 (発行者のロケーションなど)、および鍵ストア・ファイルとトラストストア・ファイルのパスを記述する名前/値のペアです。SAML 発行者構成プロパティー
新規の自己発行 SAML トークンを作成する場合、構成プロパティーを指定して、トークンの構成方法を制御することができます。構成プロパティーは、プロバイダー側情報 (発行者のロケーションなど)、および鍵ストア・ファイルとトラストストア・ファイルのパスを記述する名前/値のペアです。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configsamlhoktoken
ファイル名:twbs_configsamlhoktoken.html