プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Service Busでのサービスの開発
12c (12.2.1.2.0)
E82661-02
目次へ移動
目次

前
次

54 Oracle Service BusでのSAMLの使用

この章では、Service Busのクライアントおよびサービス間で認証および認可情報を交換するためのSecurity Assertion Markup Language (SAML)ポリシーを使用する方法について説明します。

SAMLは、WLS 9ポリシー・フレームワークまたはOracle Web Services Managerのいずれかで使用できます。「Oracle Web Services Managerを使用したOracle Service Busのセキュリティ」の説明に従って、Oracle Web Services Managerをサービス・セキュリティに使用することをお薦めします。

この章の内容は次のとおりです。

54.1 IDのSAMLトークンへのマッピング

ビジネス・サービスでSAMLトークンが要求されるが、クライアントから提供されない場合は、クライアントのIDをSAMLトークンにマップするようにプロキシ・サービスを構成できます。

SAML資格証明マッピングを構成するには:

  1. 次のいずれかの方法を使用してクライアントを認証するようにプロキシ・サービスを構成します。
    • HTTPまたはHTTPS基本認証(クライアントがリクエスト内でユーザー名とパスワードを提供)

    • HTTPSクライアント証明書

    • メッセージ・レベルの認証(サポートされるトークン・プロファイルのいずれかを使用)

      クライアント・リクエストにWS-Securityセキュリティ・ヘッダーが含まれる場合は、メッセージのプロキシ・サービス側でこのヘッダーを処理するようにプロキシ・サービスを構成する必要があります。Service Busでは、すでにWS-Securityヘッダーが含まれるSOAPエンベロープにSAMLヘッダー(または他のWS-Securityヘッダー)を追加したり、既存のセキュリティ・ヘッダーにSAML (または他の)セキュリティ・トークンを追加したりできません。

    • サード・パーティ認証

    プロキシ・サービスがユーザーを認証する場合、プロキシでは、ビジネス・サービスにメッセージを転送する前にサブジェクトが自動的に生成されます。

  2. SAMLクライアント・ポリシーを含むようにビジネス・サービスを構成します。ポリシーによって、認証済ユーザーのためのSAMLトークンがサブジェクトに生成されます。

Service BusでサポートされるOracle Web Services Manager SAMLポリシーのリストは、「事前定義済ポリシーとサポートされないアサーション」を参照してください。

注意:

この項の手順では、プロキシからビジネス・サービスを呼び出すことを前提としています。ビジネス・サービスを呼び出す前にプロキシからプロキシを呼び出す環境を使用する場合、Service Busによるセキュリティ・ヘッダーの処理方法を理解すると役立ちます。詳細は、「ローカル・プロキシ・サービスでのOWSMセキュリティの使用」を参照してください。

54.2 SAMLパススルーIDの伝播の構成

クライアントがパススルー・プロキシ・サービスへのSAMLトークンを提供する場合は、クライアントのSAMLトークンをビジネス・サービスに伝播できます。

この方法では、ビジネス・サービスが、SAMLトークンを使用した認証を要求するポリシー文を持つWebサービスであることが必要です。

SAMLパススルーIDの伝播を構成するには:

54.3 プロキシ・サービス・リクエストでのSAMLトークンの認証

アクティブな仲介プロキシ・サービスへのSAMLトークンがクライアントから提供される場合は、クライアントのIDアサーションを行うようにプロキシ・サービスを構成できます。

SAMLトークンを使用してクライアントを認証するようにプロキシ・サービスを構成するには:

  1. IDアサーション・プロバイダの構成時は、次の要件に注意してください。
    • ポリシーの確認方法がSAMLアサーション側のSAMLプロファイルと一致する必要があります。

    • アサーション側のターゲットURLをプロキシ・サービスの相対URLとして指定します(プロトコルとホスト情報は省略します)。

    • 署名されたアサーションの場合は、IDアサーション・プロバイダ・レジストリに証明書を追加します。

  2. HTTP、HTTPS、またはJMSプロトコル経由で通信するアクティブな仲介プロキシ・サービスを作成します。プロキシ・サービスは、認証を要求し、SAMLトークンを受け取るポリシー文を持つWebサービスであることが必要です。

    「ローカルな」トランスポート・タイプで通信するプロキシ・サービスは、SAMLトークン・プロファイルを使用して認証を行うことはできません。

54.4 サービス・バス(SB)トランスポートを使用したSAML認証の構成

SBトランスポートでSAMLベースの認証を使用する場合は、次の構成要件に従ってください。

  • アサーション側で、URI http://openuri.org/sb_proxy_uriを使用して、SAML資格証明マッパーを構成します。sb_proxy_uriは、SBトランスポート・サービスのURIです。

  • Service Bus側(リライイング・パーティ)でIDアサーション・プロバイダを構成する場合は、アサーション側の対象URLをプロキシのエンドポイントURIとして使用します。プロトコルおよびホスト情報は含めないでください。例: /sb_proxy_uri

54.5 SAMLのアイデンティティ切替えの使用

Oracle Web Services Managerは、アイデンティティ切替えの実行を可能にするwss11_saml_token_identity_switch_with_message_protection_client_policyを提供します。

ビジネス・サービスに付加する対象のポリシーは、プロキシ・サービスから認証されたサブジェクトに基づくアイデンティティではなく、異なるアイデンティティを伝播します。ポリシーの詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のアイデンティティ切替えのためのSAML Webサービス・クライアントの構成に関する項を参照してください。

ポリシー・プロパティsubject.precedence = falseに設定し、切替え先のアイデンティティの資格証明ストア形式(CSF)キーを提供した場合、ビジネス・サービスは現在のサブジェクトを無視し、csf-keyの資格証明でSAMLトークンを作成します。

subject.precedence = trueに設定した場合、現在のサブジェクトがSAMLトークンの作成に使用されます。ただし、サブジェクトが匿名の場合、Oracle Web Services Managerはアイデンティティ切替えの実行にcsf-keyを使用しようとします。

CSFの使用に関する詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』の資格証明ストア・フレームワークの開発に関する項を参照してください。

54.5.1 アイデンティティ切替えリソースの保護

アイデンティティ切替え機能への不正なアクセスを防ぐため、アイデンティティ切替えを実行するリソースに特別な権限を付与する必要があります。たとえば、Service Busで、アイデンティティ切替えビジネス・サービスが含まれるプロジェクトに権限を付与します。

Fusion Middleware Controlを使用して、Service Busプロジェクトに適切な権限を付与します。この内容をガイダンスとして、権限フィールドに次の情報を入力します。

  • 権限クラス: oracle.wsm.security.WSIdentityPermission

  • リソース名: ビジネス・サービスが含まれるService Busプロジェクトの名前(パスではない)

  • 権限アクション: assert

54.6 Oracle Service BusにおけるSAMLのトラブルシューティング

この項では、よく聞かれるトラブルシューティングの質問に対する回答について説明します。

質問: プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず、「Unable to add security token for identity」というエラーが表示されます。これはどういう意味ですか。

回答: このエラーには様々な原因があります。通常、これは次のいずれかの問題を意味します。

  • SAML資格証明マッパーが正しく構成されていません。構成が、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のSAMLの構成に関する項の指示に準じていることを再確認してください。

  • このエラーで一般的なもう1つの原因は、伝播するサブジェクト情報がないことです。SAMLトークンを生成するには、トランスポート・レベルまたはメッセージ・レベルのサブジェクトが必要です。クライアントにサブジェクトがあるか確認してください。これを行うには、$securityメッセージ・コンテキスト変数を検査します。

質問: SAML holder-of-keyを使用して、プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず「Failure to add signature」というエラーが表示されます。これはどういう意味ですか。

回答: このエラーには様々な原因がありますが、最も可能性が高いのは、ビジネス・サービスのサービス・キー・プロバイダに対して資格証明が構成されていないことです。Service Busは、アウトバウンドholder-of-keyアサーションを生成するときに、メッセージ・コンテンツに対するデジタル署名も生成します。これにより、受信者はメッセージが特定のユーザーから送信されたものであることのみではなく、そのメッセージが改ざんされていないことも確認できます。署名を生成するには、ビジネス・サービスは関連付けられたデジタル署名資格証明を持つサービス・キー・プロバイダを持つ必要があります。

質問: SAML IDトークンを受信するアクティブな仲介プロキシ・サービスを構成しようとすると、必ず「The SAML token is not valid」のようなエラーが表示されます。どのように修正すればよいですか。

回答: この問題は通常、そのプロキシ・サービスに対してSAML IDアサーション・プロバイダまたはSAML IDアサーション・プロバイダのアサーション側構成がないことが原因です。プロキシ・サービスがアクティブな仲介モードでSAMLアサーションを受信するには、SAML IDアサーション・プロバイダが構成されている必要があります。詳細は、『Oracle WebLogic Serverセキュリティの管理』の SAML IDアサーション・プロバイダの構成に関する項を参照してください。