プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護のユース・ケース
12c (12.2.1.3.0)
E90180-02
目次へ移動
目次

前
次

9 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のその他のリソース

このユース・ケースは、次の操作に必要な手順を示します。

このユース・ケースは、Java EE WebサービスおよびSOAコンポジット・クライアントで構成されます。

このユース・ケースの実装方法の詳細は、「ユース・ケース: OpenSSO STSでWS-Trustを使用したSAML送信者保証の実装」を参照してください。

9.1 ユース・ケース: OpenSSO STSでWS-Trustを使用したSAML送信者保証の実装

ユース・ケースを実装するには、最初にOpenSSO STSを構成し、次にOpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を実装します。

9.1.1 SAML送信者保証を実装するためのOpenSSO STSの構成

OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成するユース・ケースを実装するには、最初にOpenSSO STSを構成します。

OpenSSO STSを構成するには:

  1. OpenSSO STSインスタンスにログインします。

  2. 「構成」→「グローバル」→「セキュリティ・トークン・サービス」に移動します。

  3. 「セキュリティ」→セキュリティ・メカニズム→STSサービスによって受け入れられるセキュリティ・トークンで、すべてのオプションを有効にします。

  4. ユーザー・トークンの資格証明セクションで、必要に応じてユーザー名とパスワードを設定して、トークンの新しい資格証明を追加します。

    この例の場合、ユーザー名とパスワードをpasswordに設定します。

  5. On Behalf ofトークン・セクションで、「On Behalf ofトークンの認証チェーン」ドロップダウンリストから「ldapService」eを選択します。

  6. 「署名」セクションで、次のオプションを有効にします。

    - リクエストの署名は検証済

    - レスポンスの署名は有効(「本文」および「タイムスタンプ」を選択します)

  7. 「暗号化」セクションで、次のオプションを有効にします。

    - 「リクエストは復号化されているか」(「本文」および「ヘッダー」を選択します)

    - レスポンスは暗号化されているか

  8. 「暗号化アルゴリズム」ドロップダウン・リストから「AES」を選択し、暗号化強度ドロップダウン・リストから128を選択します。

  9. メッセージ保護要求者トークンとともにWS-Security 1.1 Kerberosトークンをサポートするには、「Kerberosの構成」セクションで次の値を構成します。

    • Kerberosドメイン・サーバー

      ドメイン・サーバーの完全修飾ホスト名。

    • Kerberosドメイン

      ドメイン名。

    • Kerberosサービス・プリンシパル

      サービス・プリンシパル名( <ホスト>/<マシン名>@<REALM NAME>の形式)

    • Kerberosキー・タブ・ファイル

      STS用に作成されたキー・タブ・ファイルの場所。

    • Kerberos署名を検証する

      JDK6が使用されている場合にのみ有効です。

  10. SSLをサポートするには、次の手順を実行します。

    1. トークン発行属性セクションで、OpenSSOインスタンスに基づいてSSLエンドポイントを編集します。

    2. 「署名」で、トランスポートがSSLにより保護されている場合に署名の検証を無効にするオプションを有効にします。

    3. 「暗号化」で、トランスポートがSSLにより保護されている場合に復号化を無効にするオプションを有効にします。

  11. OpenSSO STSをホストするサーバー上でSSLをサポートするには:

    OpenSSO STSをホストするWebLogic Serverで、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSSLのキーストアの構成に関する項で説明する手順を実行します。

    Open SSO STSをホストするGlassfishサーバーの場合は、次の手順を実行します。

    1. 次のコマンドを発行することによりアプリケーション・サーバーのための新しい鍵ペアを生成します。

      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

      氏名の入力を求めるプロンプトが表示されたら、証明書を生成する対象のマシンのホスト名を入力します。他のプロンプトで、該当する詳細を入力します。

    2. 次のコマンドを発行することにより証明書署名リクエスト(CSR)を生成します。

      keytool -certreq -alias owsm -file owsm.csr -keystore keystore.jks -storepass changeit

      有効な証明書を取得するために、生成後にowsm.csrファイルに書き込まれたリクエストを認証局に送信する必要があります。たとえば、OpenSSO QAチームによって維持されている証明書管理サーバー(https://example.com)に送信します。

    3. 証明書管理サーバー(https://example.com)にアクセスし、左側のペインで「SSLサーバー」をクリックし、.csrファイルの「BEGIN CERTIFICATE REQUEST」から「END CERTIFICATE REQUEST」までの内容をPKCS # 10リクエスト・フィールドに貼り付けます。

      必要に応じてその他のフィールドに入力し、リクエストを送信します。リクエストが承認されると、同じページの取得タブから証明書を取得できます。

    4. 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」を入力します。

    5. 認証局のSSL証明書にアクセスします。https://example.comにアクセスし、「SSLサーバー」→「取得」タブ→証明書のリスト→「検索」に移動します。ページの最初の「詳細」ボタンをクリックし、BASE64でエンコードされた証明書を別の.certファイルにコピーします例: mahogany.cert

    6. 次のコマンドを使用して、この証明書を別名rootcaとして<glassfish_install_dir>/domains/<sts_deploy_domain>/config/cacerts.jksファイルにインポートします。

      keytool -import -v -alias rootca -file mahogany.cert -keystore cacerts.jks -storepass changeit

    7. クライアント側のtruststore.jksファイルについても、前述の手順を繰り返すことが必要になる場合があります。該当ファイルから既存のrootca別名を削除し、前述のように新たにインポートします(キーストア・ファイルの場所を変更します)。

    8. 新しい証明書を使用してGlassFishを構成するには、http://hostname:admin-port/で管理コンソールにアクセスし、「構成」→HTTPサービス→http-listener2 (デフォルトのSSL有効ポート)→「SSL」に移動して、証明書のニックネームをs1as (自己署名証明書)からowsmに変更します。

    9. Glassfishを再起動します。

9.1.2 OpenSSO STSでWS-Trustを使用したメッセージ保護付きのSAML送信者保証の構成

OpenSSO STSを構成したら、OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成します。

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成するには:
  1. クライアント側のSTSポリシーを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のポリシーの構成に関する項を参照してください。

    注意:

    信頼はWebサービスとクライアント間に存在するために、SAML送信者保証確認に自動ポリシー構成は使用できません。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWS-Trustを使用したSAML送信者保証の構成に関する項を参照してください。

    oracle/sts_trust_config_client_policyをコピーし、要求者トークン・タイプに基づいてポリシー構成を編集します。

    メッセージ保護要求者トークンでWS-Security 1.0ユーザー名トークンをサポートするには:

    • orasp:policy-reference-uri="oracle/wss10_username_token_with_message_protection_client_policy"

    • orasp:port-endpoint="http://<host>:<port>/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_UN_WSS10_SOAP12)"

    • orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10un"

    • orasp:sts-keystore-recipient-alias="test"

    メッセージ保護要求者トークンでSSL経由でWS-Security 1.0ユーザー名トークンをサポートするには:

    • orasp:policy-reference-uri="oracle/wss_username_token_over_ssl_client_policy"

    • orasp:port-endpoint="http://localhost:8080/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_TLS_UN_WSS10_SOAP12)"

    • orasp:port-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un"

    • orasp:sts-keystore-recipient-alias="test"

    メッセージ保護要求者トークンでWS-Security 1.0 X509トークンをサポートするには:

    • orasp:policy-reference-uri="oracle/wss10_x509_token_with_message_protection_client_policy"

    • orasp:port-endpoint="http://localhost:8080/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_X509_WSS10_SOAP12)"

    • orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10x509"

    • orasp:sts-keystore-recipient-alias="test"

  2. Java EE Webサービスにoracle/wss11_saml_token_with_message_protection_service_policyポリシーをアタッチし(SAML送信者保証のシナリオでは対応する発行済トークン・ポリシーはありません)、サービスの暗号化鍵の別名およびパスワードを指定するためにkeystore.enc.csf.keyをオーバーライドします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

    注意:

    デフォルトでは、oracle/wss11_saml_hok_with_message_protection_service_policyポリシーはトークン・タイプSAML 1.1により構成されています。トークン・タイプをSAML 2.0に構成する場合、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する項の説明に従って、ポリシーをコピーして編集する必要があります。

  3. 手順1で作成したポリシー、その後でoracle/wss11_sts_issued_saml_with_message_protection_client_policyポリシーをSOAコンポジット・クライアントにアタッチし、要求者トークンの必要に応じて、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のwss11_sts_issued_saml_with_message_protection_client_templateに関する項に記載されているクライアント構成プロパティをオーバーライドします。

    完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

    「On Behalf Of」ユース・ケースは、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のwss11_sts_issued_saml_with_message_protection_client_templateに関する項に示されているように、sts.auth.on.behalf.of.csf.keyおよびon.behalf.ofプロパティに依存します。詳細は、『Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理』のOn Behalf Ofユース・ケースに関する項を参照してください。

    on.behalf.ofプロパティをtrueに設定する必要があります。sts.auth.on.behalf.of.csf.keyには、「on behalf of」ユース・ケースをサポートするデフォルトのOpenSSO STS構成で使用可能なユーザー資格証明を設定する必要があります。つまり、demo、パスワードpasswordです。

    注意:

    ポリシーをアタッチする場合のクライアント構成プロパティのオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用したWebサービス・クライアントへのポリシーの直接アタッチに関する項を参照してください。

  4. ユーザーにかわって(on behalf of) OpenSSO STSからのトークンをリクエストする権限をクライアント・アプリケーションに付与するために、WSIdentityPermissionwsm-agent-core.jarに付与します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWSIdentityPermission権限の設定に関する項を参照してください。