11 OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成
ユース・ケースの説明、ソリューションのサマリー、関連するコンポーネントおよびリンクされたドキュメント・リソースを参照して、OpenSSO STSでWS-Trustを使用したSAML送信者保証を構成できます。
- ユース・ケース
-
OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成します。
- 解決策
-
WS-Trustポリシーを使用してメッセージ保護付きでOracle Web Services Manager (OWSM) SAML送信者保証をWebサービス・クライアントにアタッチし、メッセージ保護ポリシーを使用してOWSM SAML送信者保証をWebサービスにアタッチして、OpenSSO STSを構成します。
- コンポーネント
-
-
Oracle WebLogic Server
-
Oracle Web Services Manager(OWSM)
-
OpenSSO STS
-
保護するWebサービスおよびクライアント・アプリケーション
-
- Oracle Web Services Managerのその他のリソース
このユース・ケースは、次の操作に必要なステップを示します。
-
OpenSSO STSでWS-Trustを使用してメッセージ・レベル保護付きでSAML送信者保証を実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
WS-Trust 1.3仕様は、セキュリティ・トークンのリクエストおよび発行を行う際の枠組みを提供するWS-Securityへの拡張機能と、ブローカ・トラスト関係への拡張機能を定義します。WS-Trust拡張機能は、セキュリティ・トークンの発行、更新および検証を行う方法を提供しています。Webサービス・クライアントとWebサービスとの間の通信を保護するには、両者がセキュリティ資格証明を交換する必要があります。WS-Trust仕様で定義されているように、これらの資格証明は、信頼ブローカとして機能する信頼できるセキュリティ・トークン・サービス(STS)から取得できます。つまり、Webサービス・クライアントおよびWebサービスは、明示的に相互に信頼し合っていませんが、両方がSTSを信頼しているため、暗黙的に相互に信頼し合っています。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のWebサービスWS-Trustの概要に関する項を参照してください。
特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。
-
oracle/wss11_sts_issued_saml_with_message_protection_client_policy
およびoracle/sts_trust_config_client_policy
-
oracle/wss11_saml_token_with_message_protection_service_policy
-
-
OpenSSO STSを構成します。
このユース・ケースは、Java EE WebサービスおよびSOAコンポジット・クライアントで構成されます。
このユース・ケースの実装方法の詳細は、「ユース・ケース: OpenSSO STSでWS-Trustを使用したSAML送信者保証の実装」を参照してください。
11.1 ユース・ケース: OpenSSO STSでWS-Trustを使用したSAML送信者保証の実装
ユース・ケースを実装するには、最初にOpenSSO STSを構成し、次にOpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を実装します。
11.1.1 SAML送信者保証を実装するためのOpenSSO STSの構成
OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成するユース・ケースを実装するには、最初にOpenSSO STSを構成します。
OpenSSO STSを構成するには:
-
OpenSSO STSインスタンスにログインします。
-
「構成」→「グローバル」→「セキュリティ・トークン・サービス」に移動します。
-
「セキュリティ」→セキュリティ・メカニズム→STSサービスによって受け入れられるセキュリティ・トークンで、すべてのオプションを有効にします。
-
ユーザー・トークンの資格証明セクションで、必要に応じてユーザー名とパスワードを設定して、トークンの新しい資格証明を追加します。
この例の場合、ユーザー名とパスワードをpasswordに設定します。
-
On Behalf ofトークン・セクションで、「On Behalf ofトークンの認証チェーン」ドロップダウンリストから「ldapService」eを選択します。
-
「署名」セクションで、次のオプションを有効にします。
- リクエストの署名は検証済
- レスポンスの署名は有効(「本文」および「タイムスタンプ」を選択します)
-
「暗号化」セクションで、次のオプションを有効にします。
- 「リクエストは復号化されているか」(「本文」および「ヘッダー」を選択します)
- レスポンスは暗号化されているか
-
「暗号化アルゴリズム」ドロップダウン・リストから「AES」を選択し、暗号化強度ドロップダウン・リストから128を選択します。
-
メッセージ保護要求者トークンとともにWS-Security 1.1 Kerberosトークンをサポートするには、「Kerberosの構成」セクションで次の値を構成します。
-
Kerberosドメイン・サーバー
ドメイン・サーバーの完全修飾ホスト名。
-
Kerberosドメイン
ドメイン名。
-
Kerberosサービス・プリンシパル
サービス・プリンシパル名(
<ホスト>/<マシン名>@<REALM NAME>
の形式) -
Kerberosキー・タブ・ファイル
STS用に作成されたキー・タブ・ファイルの場所。
-
Kerberos署名を検証する
JDK6が使用されている場合にのみ有効です。
-
-
SSLをサポートするには、次のステップを実行します。
-
トークン発行属性セクションで、OpenSSOインスタンスに基づいてSSLエンドポイントを編集します。
-
「署名」で、トランスポートがSSLにより保護されている場合に署名の検証を無効にするオプションを有効にします。
-
「暗号化」で、トランスポートがSSLにより保護されている場合に復号化を無効にするオプションを有効にします。
-
-
OpenSSO STSをホストするサーバー上でSSLをサポートするには:
OpenSSO STSをホストするWebLogic Serverで、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSSLのキーストアの構成に関する項で説明するステップを実行します。
Open SSO STSをホストするGlassfishサーバーの場合は、次のステップを実行します。
-
次のコマンドを発行することによりアプリケーション・サーバーのための新しいキー・ペアを生成します。
keytool -genkey -keyalg <algorithm for generating the key pair> -keystore keystore.jks -validity <days> -alias <alias_name>
次に例を示します。
keytool -genkey -keyalg RSA -keystore <glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jks -validity 365 -alias owsm
氏名の入力を求めるプロンプトが表示されたら、証明書を生成する対象のマシンのホスト名を入力します。他のプロンプトで、該当する詳細を入力します。
-
次のコマンドを発行することにより証明書署名リクエスト(CSR)を生成します。
keytool -certreq -alias owsm -file owsm.csr -keystore keystore.jks -storepass changeit
有効な証明書を取得するために、生成後に
owsm.csr
ファイルに書き込まれたリクエストを認証局に送信する必要があります。たとえば、OpenSSO QAチームによって維持されている証明書管理サーバー(https://example.com
)に送信します。 -
証明書管理サーバー(
https://example.com
)にアクセスし、左側のペインで「SSLサーバー」をクリックし、.csr
ファイルの「BEGIN CERTIFICATE REQUEST
」から「END CERTIFICATE REQUEST
」までの内容をPKCS # 10リクエスト・フィールドに貼り付けます。必要に応じてその他のフィールドに入力し、リクエストを送信します。リクエストが承認されると、同じページの取得タブから証明書を取得できます。
-
BEGIN CERTIFICATE
からEND CERTIFICATE
の証明書の内容(PKCS # 7形式)を.cert
拡張子のファイルにコピーし、次のkeytoolコマンドを使用することによりサーバー証明書を<glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jks
ファイルにインポートします。keytool -import -v -alias owsm -file owsm.cert -keystore keystore.jks -storepass changeit
証明書を信頼する場合は、プロンプトが表示されたら「YES」を入力します。
-
認証局のSSL証明書にアクセスします。
https://example.com
にアクセスし、「SSLサーバー」→「取得」タブ→証明書のリスト→「検索」に移動します。ページの最初の「詳細」ボタンをクリックし、BASE64でエンコードされた証明書を別の.cert
ファイルにコピーします例:mahogany.cert
-
次のコマンドを使用して、この証明書を別名
rootca
として<glassfish_install_dir>/domains/<sts_deploy_domain>/config/cacerts.jks
ファイルにインポートします。keytool -import -v -alias rootca -file mahogany.cert -keystore cacerts.jks -storepass changeit
-
クライアント側の
truststore.jks
ファイルについても、前述のステップを繰り返すことが必要になる場合があります。該当ファイルから既存のrootca
別名を削除し、前述のように新たにインポートします(キーストア・ファイルの場所を変更します)。 -
新しい証明書を使用してGlassFishを構成するには、
http://hostname:admin-port/
で管理コンソールにアクセスし、「構成」→HTTPサービス→http-listener2 (デフォルトのSSL有効ポート)→「SSL」に移動して、証明書のニックネームをs1as
(自己署名証明書)からowsm
に変更します。 -
Glassfishを再起動します。
-