SAML bearer トークンは、Bearer サブジェクト確認メソッドを使用する SAML トークンです。bearer サブジェクト確認メソッドでは、使用する SOAP メッセージの内容を備えた SAML トークンをバインドする対応を確立するために、SOAP メッセージの送信側は必要ありません。SAML bearer トークン用に、クライアントおよびプロバイダーのポリシー・セットの関連付けおよびバインディングを構成することができます。
このタスクについて
SAML トークン・ポリシー
は、アプリケーション・サーバー内で CustomToken 拡張によって定義されます。CustomToken 拡張
を作成するには、クライアントおよびプロバイダーのバインディング文書中の
カスタム・プロパティーに関して SAML トークン構成パラメーターを
定義する必要があります。それらのカスタム・プロパティーに関する本質的な構成は、汎用バインディングの Saml Bearer Client sample および Saml Bearer
Provider sample に
含まれています。
クライアントおよびプロバイダーのサンプル・バインディング
には、SAML11 と SAML20 両方のトークン・タイプの構成情報が含まれています。
これらのサンプルは、SAML11 と SAML20 の両方のポリシー・セットで使用できます。SAML トークンをどのように実装する予定なのかに基づいて、
インストールされたバインディング・サンプル中のプロパティー値を変更する必要があります。プロパティーおよび
プロパティー値の例は、以下の手順中に示します。
以下の手順に示すように、バインディング・サンプルを変更するには、まず Web サービス・クライアント・ポリシー・セットの関連付けを構成し、次に Web サービス・プロバイダー・ポリシー・セットの関連付けを変更します。手順で示されている例は、サンプル Web サービス・アプリケーション JaxWSServicesSamples を使用します。
- トラスト・クライアントを構成します。
汎用バインディングを使用して外部 STS にアクセスする場合は、ポリシー・セットおよびバインディングとクライアント・アプリケーションを関連付けるステップに進んでください。
アプリケーション固有のバインディングを使用して外部 STS にアクセスする場合は、以下のサブステップを実行します。
- バインディングを構成できるように、トラスト・クライアントのポリシー・セットを Web サービス・クライアント・アプリケーションと一時的に関連付けます。
トラスト・クライアントのポリシー・セットを関連付けると、管理コンソールを使用してクライアント・バインディング文書のバインディングを作成し、それを変更できるようになります。この操作を実行する必要があるのは、アプリケーション固有のバインディングを使用して外部 STS にアクセスする場合のみです。
- 管理コンソールで、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・クライアント・リソース (JaxWSServicesSamples) を選択します。
- 「クライアント・ポリシー・セットの関連付け」をクリックします。
- ポリシー・セット Username WSHTTPS default を選択します。
- トラスト・クライアント・バインディングを作成します。
- Web サービス・クライアント・リソース (JaxWSServicesSamples) をもう一度選択します。
- 「バインディングの割り当て」を選択します。
- 「新規のアプリケーション固有バインディング」をクリックして、アプリケーション固有のバインディングを作成します。
- 新規のアプリケーション固有バインディングのバインディング構成名を指定します。
この例では、バインディング名は SamlTCSample です。
- 「SSL トランスポート」ポリシー・タイプをバインディングに追加します。
「追加」>「SSL トランスポート」とクリックし、次に「OK」をクリックします。
- WS-Security ポリシー・タイプをバインディングに追加し、トラスト・クライアントの認証設定を変更します。
- WS-Security ポリシー・タイプがまだ SamlTCSample バインディング定義に含まれていない場合は、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」>「SamlTCSample」とクリックします。
- 「追加」>「WS-Security」>「認証と保護」>「request:uname_token」をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」を選択します。
- Web サービス・クライアントが外部 STS に認証されるための
ユーザー名とパスワードを指定します。
- 「OK」をクリックしてから、「保存」をクリックします。
- バインディング設定が保存されたら、
「サービス・クライアントのポリシー・セットおよびバインディング」パネルに戻って、
ポリシー・セットとバインディングを切り離します。
- このページのナビゲーションで「サービス・クライアントのポリシー・セットおよびバインディング」をクリックするか、または「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・クライアント・リソース (JaxWSServicesSamples) を選択し、「クライアント・ポリシー・セットの切り離し」をクリックします。
ポリシー・セットが切り離されても、作成したアプリケーション固有のバインディング構成
はファイル・システムから削除されません。したがって、作成したアプリケーション固有のバインディングを使用して、トラスト・クライアントで STS にアクセスすることができます。
- SAML ポリシー・セットおよびバインディングをクライアント・アプリケーションと関連付けます。
- 必要な SAML ポリシー・セットを Web サービス・クライアント・アプリケーションと関連付けます。
- SAML ポリシーが JaxWSServicesSamples の「サービス・クライアントのポリシー・セットおよびバインディング」ページ上にまだない場合は、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・クライアント・リソースを選択します。
- 「クライアント・ポリシー・セットの関連付け」をクリックします。
- Web サービス・クライアント用の適切な SAML ポリシーを選択します。
- Saml Bearer Client sample 汎用バインディングをクライアントと関連付けます。
- Web サービス・クライアント・リソースをもう一度選択します。
- 「バインディングの割り当て」を選択します。
- 「Saml Bearer Client sample」を選択します。
- Web サービス・クライアント・バインディングを構成します。
サンプル・バインディングで STS エンドポイント URL を構成します。
- 「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」>「Saml Bearer Client sample」>「WS-Security」>「認証と保護」とクリックします。
- 「認証トークン」表で、「gen_saml11token」または「gen_saml20token」をクリックします。
- 「コールバック・ハンドラー」をクリックします。
- stsURI プロパティーを変更して、STS エンドポイントを指定します。
中間サーバーの自己発行者の場合、このプロパティーは不要です。ただし、このプロパティーを中間サーバーの自己発行者に対して指定した場合は、www.websphere.ibm.com/SAML/Issuer/Self に設定されます。
- 以下のプロパティーが、必要な値に設定されていることを確認します。
これらのプロパティーのいずれかが別の値に設定されている場合は、そのプロパティー設定を必要な値に変更してください。
- confirmationMethod プロパティーは、Bearer に設定する必要があります。
- keyType プロパティーは、http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer に設定する必要があります。
- wstrustClientPolicy プロパティーは、Username
WSHTTPS default に設定する必要があります。
- wstrustClientBinding プロパティーに指定した値は、前のステップで作成したトラスト・クライアントのアプリケーション固有バインディングの名前と一致している必要があります。前のステップの例では、SamlTCSample という名前のアプリケーション固有バインディングを作成しました。このシナリオでは、SamlTCSample を wstrustClientBinding プロパティーの値として指定する必要があります。
- オプション: アプリケーション・サーバーがバインディングを検索する方法を変更
する場合は、wstrustClientBindingScope プロパティーを指定し、その値を application または domain のいずれかに設定します。
値が domain に設定されている場合、アプリケーション・サーバーは、汎用バインディング文書が含まれているファイル・システム・ロケーションで wstrustClientBinding を検索します。
値が application に設定されている場合、
アプリケーション・サーバーは、アプリケーション固有のバインディング文書
が含まれているファイル・システム・ロケーションで wstrustClientBinding を検索します。
wstrustClientBindingScope プロパティーが指定されていない
場合、アプリケーション・サーバーのデフォルト動作は、まず、アプリケーション固有の
バインディングを検索した後、汎用バインディングを検索するという動作です。
wstrustClientBinding が見つからない場合、アプリケーション・サーバーはデフォルトのバインディングを使用します。
- オプション: デフォルトのトラスト・クライアント SOAP バージョン (アプリケーション・クライアントと同じ) を変更する場合は、wstrustClientSoapVersion カスタム・プロパティーに新しい値を指定します。
SOAP バージョン 1.1 に変更するには、wstrustClientSoapVersion カスタム・プロパティーを 1.1 に設定します。
SOAP バージョン 1.2 に変更するには、wstrustClientSoapVersion カスタム・プロパティーを 1.2 に設定します。
- 「適用」をクリックしてから、「保存」をクリックします。
wstrustClientBinding の構成をさらに変更する必要があり、
wstrustClientBinding プロパティーがアプリケーション固有のバインディング (この例では SamlTCSample) を指している場合は、変更を完了するために、アプリケーション固有のバインディングを Web サービス・クライアントに関連付ける必要があります。関連付けは一時的です。前のステップで詳述したように、
変更が完了したら、変更したアプリケーション固有のバインディングを Web サービス・クライアントから
切り離すことができます。
次のステップに進む前に、外部 STS からの SSL 証明書が NodeDefaultTrustStore 内にあることを確認してください。詳しくは、『始める前に』セクションを参照してください。
- ポリシー・セットの関連付けの変更が有効になるように、Web サービス・クライアント・アプリケーションを
再始動します。
アプリケーションが再始動すると、ポリシー・セットとバインディングの関連付け情報が更新されますが、汎用バインディング内の更新情報は、すべての汎用バインディングがリフレッシュされるまで、ランタイムでは反映されません。
更新を有効にするには、汎用バインディングを再ロードした後で、アプリケーションを再始動する必要があります。詳しくは、後述の、クライアントおよびプロバイダーの汎用バインディングを再ロードし、アプリケーションを再始動するステップを参照してください。
- SAML ポリシー・セットおよびバインディングをプロバイダー・アプリケーションと関連付けます。
- 適切な SAML ポリシー・セットを Web サービス・プロバイダーと関連付けます。
- 管理コンソールで、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・プロバイダーのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・プロバイダー・リソース (JaxWSServicesSamples) を選択します。
- 「ポリシー・セットの関連付け」をクリックします。
- Web サービス・プロバイダー用の適切な SAML ポリシーを選択します。
- Saml Bearer Provider sample 汎用バインディングを割り当てます。
- Web サービス・プロバイダー・リソースをもう一度選択します。
- 「バインディングの割り当て」を選択します。
- 「Saml Bearer Provider sample」を選択します。
- Web サービス・プロバイダー・バインディングを構成します。
- Web サービス・プロバイダー・バインディングが JaxWSServicesSamples の「サービス・プロバイダーのポリシー・セットおよびバインディング」ページ上にまだない場合は、「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・プロバイダーのポリシー・セットおよびバインディング」>「Saml Bearer Provider sample」とクリックします。
- 「WS-Security」>「認証と保護」とクリックします。
- 「認証トークン」表で、con_saml11token または con_saml20token をクリックします。
- 「コールバック・ハンドラー」をクリックします。
外部 STS 用の SAML トークン発行者デジタル署名検証バインディング・データを構成するには、管理コンソールの「コールバック・ハンドラー」ページを使用します。
- オプション: デジタル署名検証が行われないようにする場合は、signatureRequired カスタム・プロパティーを false に設定します。
デジタル署名検証が行われないようにする場合は、signatureRequired カスタム・プロパティーを false に設定します。ただし、セキュリティーの観点から推奨されるのは、SAML アサーションには署名が必要であり、常に発行者デジタル署名検証が必要であるようにすることです。このプロパティーのデフォルト値は false です。
- オプション: 署名者証明書検証を許可しない場合は、trustAnySigner カスタム・プロパティーを true に設定します。
証明書構成設定「すべてを信頼」は、SAML 署名検証の目的に関しては
無視されます。このプロパティーが有効となるのは、signatureRequired カスタム・プロパティーが true (このプロパティーのデフォルト値) に設定されている場合のみです。
- アサーションが STS によって署名され、signatureRequired カスタム・プロパティーがデフォルト値の true に設定され、trustAnySigner カスタム・プロパティーがデフォルト値の false に設定されている場合は、以下の操作を実行します。
- 外部 STS 署名証明書がトラスト検証を通過できるようにするプロバイダーのトラストストアに、証明書 (STS 署名証明書自体またはそのルート CA 証明書など) を追加します。
- trustStorePath カスタム・プロパティーを、トラストストア・ファイル名と一致する値に設定します。この値は、完全修飾値にするか、または ${USER_INSTALL_ROOT} などのキーワードを使用できます。
- trustStoreType カスタム・プロパティーを、鍵ストア・タイプと一致する値に設定します。サポートされている鍵ストア・タイプは、jks、jceks、および pkcs12 です。
- trustStorePassword カスタム・プロパティーを、トラストストア・パスワードと一致する値に設定します。パスワードは、カスタム・プロパティーとして保存され、
管理コンソールによってエンコードされます。
- オプション: trustedAlias カスタム・プロパティーを samlissuer などの値に設定します。このプロパティーが指定
されている場合、指定された別名によって表される X.509 証明書は、SAML 署名検証に対して信頼された唯一の STS 証明書
です。このカスタム・プロパティーが指定されていない場合、Web サービス・ランタイム環境は、SAML アサーション内の署名証明書を使用して 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"/>
- SAML アサーションを暗号化解除します。
SAML アサーションが STS で暗号化されている場合は、SAML トークンが Assertion エレメントではなく EncryptedAssertion エレメントとして SOAP セキュリティー・ヘッダー内に表示されます。SAML アサーションを暗号化解除するには、STS でアサーションの暗号化に使用した公開鍵に対応する秘密鍵を構成する必要があります。
受信者が SAML アサーションを暗号化解除するには、以下のコールバック・ハンドラー・カスタム・プロパティー
が、以下の表に示す値に設定されている必要があります。
カスタム・プロパティー |
値 |
keyStorePath |
鍵ストアのロケーション |
keyStoreType |
一致する鍵ストア・タイプ。 サポートされている鍵ストア・タイプ
は、jks、jceks、および pkcs12 です。
|
keyStorePassword |
鍵ストアのパスワード |
keyAlias |
SAML 暗号化に使用される秘密鍵の別名 |
keyName |
SAML 暗号化に使用される秘密鍵の名前 |
keyPassword |
鍵名のパスワード |
- オプション: 呼び出し元のバインディングを
構成して、要求者識別を表すために SAML トークンを選択することができます。 Web Services Security ランタイム環境は、指定された JAAS ログイン構成を使用して、ユーザー・セキュリティー名およびグループ・メンバーシップ・データをユーザー・レジストリーから取得します。その際、SAML トークン NameId または NameIdentifier をユーザー名として使用します。
- とクリックします。
- 呼び出し元構成を作成するため、「新規」を
クリックします。
- 「名前」を指定します (例: caller)。
- 「呼び出し元識別ローカル・パーツ」の値を入力します。
SAML 1.1 トークンの場合は、以下のように入力します。
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1SAML 2.0 トークンの場合は、以下のように入力します。
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0
- 「適用」と「保存」をクリックします。
- クライアントおよびプロバイダーの汎用バインディングを再ロードし、アプリケーションを再始動します。
汎用バインディング内の情報が更新されても、新しい設定がランタイムで直ちに反映されるわけではありません。更新を有効にするには、その前にアプリケーション・サーバーのポリシー・セット・マネージャーを使用して、更新された汎用バインディングを再ロードする必要があります。更新されたポリシー・セットおよび汎用バインディングを再ロードするには、アプリケーション・サーバーを停止して再始動するか、wsadmin で PolicySetManager MBean に対して refresh コマンドを使用します。ポリシー・セット・マネージャーのリフレッシュについて詳しくは、トピック『wsdamin スクリプトを使用したポリシー・セット構成のリフレッシュ (Refreshing policy set configurations using wsdamin scripting)』を参照してください。
クライアントおよびプロバイダーの汎用バインディングを再ロードし、アプリケーションを再始動するには、以下のいずれかの操作を実行します。
- アプリケーション・サーバーを再始動します。
- PolicySetManager MBean をリフレッシュした後、クライアントおよびプロバイダー Web サービス・アプリケーションを再始動します。