この章では、Oracle Service Busのクライアントおよびサービス間で認証および認可情報を交換するためのSecurity Assertion Markup Language (SAML)ポリシーを使用する方法について説明します。
SAMLは、WLS 9ポリシー・フレームワークまたはOracle Web Services Managerのいずれかで使用できます。第50章「Oracle Web Services Managerを使用したOracle Service Busのセキュリティ」の説明に従って、Oracle Web Services Managerをサービス・セキュリティに使用することをお薦めします。
SAMLを使用する環境の設定の詳細な手順については、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項と、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のSAMLの構成の項を参照してください。これらのガイドにあるSAMLの構成手順は、Oracle Service BusでSAMLを使用するための前提条件です。
この章では、次の内容について説明します。
ビジネス・サービスでSAMLトークンが要求されるが、クライアントから提供されない場合は、クライアントのIDをSAMLトークンにマップするようにプロキシ・サービスを構成できます。
この方法では、ビジネス・サービスが、SAMLトークンを使用した認証を要求するWS-Policy文を持つWebサービスであることが必要です。
SAML資格証明マッピングを構成するには:
次のいずれかの方法を使用してクライアントを認証するようにプロキシ・サービスを構成します。
HTTPまたはHTTPS基本認証(クライアントがリクエスト内でユーザー名とパスワードを提供)
HTTPSクライアント証明書
メッセージ・レベルの認証(サポートされるトークン・プロファイルのいずれかを使用)
クライアント・リクエストにWS-Securityセキュリティ・ヘッダーが含まれる場合は、メッセージのプロキシ・サービス側でこのヘッダーを処理するようにプロキシ・サービスを構成する必要があります。Oracle Service Busでは、すでにWS-Securityヘッダーが含まれるSOAPエンベロープにSAMLヘッダー(または他のWS-Securityヘッダー)を追加したり、既存のセキュリティ・ヘッダーにSAML (または他の)セキュリティ・トークンを追加したりすることはできません。
サード・パーティ認証
プロキシ・サービスがユーザーを認証する場合、プロキシでは、ビジネス・サービスにメッセージを転送する前にサブジェクトが自動的に生成されます。
SAMLクライアント・ポリシーを含むようにビジネス・サービスを構成します。ポリシーによって、認証済ユーザーのためのSAMLトークンがサブジェクトに生成されます。
Oracle Service BusでサポートされるOracle Web Services Manager SAMLポリシーのリストは、50.2.8項「サポートされるシード・ポリシーとサポートされないアサーション」を参照してください。
注意: この項の手順では、プロキシからビジネス・サービスを呼び出すことを前提としています。ビジネス・サービスを呼び出す前にプロキシからプロキシを呼び出す環境を使用する場合、Oracle Service Busによるセキュリティ・ヘッダーの処理方法を理解すると役立ちます。詳細は、31.5項「ローカル・プロキシでのOracle WSMセキュリティの使用」を参照してください。 |
クライアントがパススルー・プロキシ・サービスへのSAMLトークンを提供する場合は、クライアントのSAMLトークンをビジネス・サービスに伝播できます。
この方法では、ビジネス・サービスが、SAMLトークンを使用した認証を要求するポリシー文を持つWebサービスであることが必要です。
SAMLパススルーIDの伝播を構成するには:
プロキシ・サービス - 52.3.2項「パススルー・プロキシ・サービスの作成: 主な手順」の説明のとおり、パススルー・プロキシ・サービスを構成します。
ビジネス・サービス - 52.4項「ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順」の説明のとおり、SAMLトークンを使用する認証を要求するポリシー文でSOAP-HTTPまたはSOAP-JMSのビジネス・サービスを構成します。
アクティブな仲介プロキシ・サービスへのSAMLトークンがクライアントから提供される場合は、クライアントのIDアサーションを行うようにプロキシ・サービスを構成できます。
SAMLトークンを使用してクライアントを認証するようにプロキシ・サービスを構成するには:
IDアサーション・プロバイダの構成時は、次の要件に注意してください。
ポリシーの確認方法がSAMLアサーション側のSAMLプロファイルと一致する必要があります。
アサーション側のターゲットURLをプロキシ・サービスの相対URLとして指定します(プロトコルとホスト情報は省略します)。
署名されたアサーションの場合は、IDアサーション・プロバイダ・レジストリに証明書を追加します。
HTTP、HTTPS、またはJMSプロトコル経由で通信するアクティブな仲介プロキシ・サービスを作成します。プロキシ・サービスは、認証を要求し、SAMLトークンを受け取るポリシー文を持つWebサービスであることが必要です。
「ローカルな」トランスポート・タイプで通信するプロキシ・サービスは、SAMLトークン・プロファイルを使用して認証を行うことはできません。
SBトランスポートでSAMLベースの認証を使用する場合は、次の構成要件に従ってください。
アサーション側で、URI http://openuri.org/sb_proxy_uriを使用して、SAML資格証明マッパーを構成します。sb_proxy_uriは、SBトランスポート・サービスのURIです。
Oracle Service Bus側(依存側)でIDアサーション・プロバイダを構成する場合は、アサーション側のターゲットURLをプロキシのエンドポイントURIとして使用します。プロトコルおよびホスト情報は含めないでください。例: /sb_proxy_uri。
Oracle Web Services Managerは、アイデンティティ切替えの実行を可能にするwss11_saml_token_identity_switch_with_message_protection_client_policyを提供します。ビジネス・サービスに付加する対象のポリシーは、プロキシ・サービスから認証されたサブジェクトに基づくアイデンティティではなく、異なるアイデンティティを伝播します。ポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のアイデンティティ切替えのためのSAML Webサービス・クライアントの構成に関する項を参照してください。
ポリシー・プロパティsubject.precedence = falseに設定し、切替え先のアイデンティティの資格証明ストア形式(CSF)キーを提供した場合、ビジネス・サービスは現在のサブジェクトを無視し、csf-keyの資格証明でSAMLトークンを作成します。
subject.precedence = trueに設定した場合、現在のサブジェクトがSAMLトークンの作成に使用されます。ただし、サブジェクトが匿名の場合、Oracle Web Services Managerはアイデンティティ切替えの実行にcsf-keyを使用しようとします。
CSFの操作の詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のCSFによるアプリケーション開発の概要に関する項を参照してください。
アイデンティティ切替え機能への不正なアクセスを防ぐため、アイデンティティ切替えを実行するリソースに特別な権限を付与する必要があります。たとえば、Oracle Service Busで、アイデンティティ切替えビジネス・サービスが含まれるプロジェクトに権限を付与します。
Oracle Service Busプロジェクトに適切な権限を付与するには、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のWSIdentityPermission権限の設定に関する項の説明のとおり、Oracle Enterprise Manager Fusion Middleware Controlを使用します。この内容をガイダンスとして、権限フィールドに次の情報を入力します。
権限クラス - oracle.wsm.security.WSIdentityPermission
リソース名 - ビジネス・サービスが含まれるOracle Service Busプロジェクトの名前(パスではない)
権限アクション - assert
質問: プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず、「Unable to add security token for identity
」というエラーが表示されます。これはどういう意味ですか。
回答: このエラーには様々な原因があります。通常、これは次のいずれかの問題を意味します。
SAML資格証明マッパーが正しく構成されていません。構成が、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項の指示と一致しているか再確認してください。
このエラーで一般的なもう1つの原因は、伝播するサブジェクト情報がないことです。SAMLトークンを生成するには、トランスポート・レベルまたはメッセージ・レベルのサブジェクトが必要です。クライアントにサブジェクトがあるか確認してください。これを行うには、$security
メッセージ・コンテキスト変数を検査します。
質問: SAML holder-of-keyを使用して、プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず「Failure to add signature
」というエラーが表示されます。これはどういう意味ですか。
回答: このエラーには様々な原因がありますが、最も可能性が高いのは、ビジネス・サービスのサービス・キー・プロバイダに対して資格証明が構成されていないことです。Oracle Service Busは、アウトバウンドholder-of-keyアサーションを生成するときに、メッセージ・コンテンツに対するデジタル署名も生成します。これにより、受信者はメッセージが特定のユーザーから送信されたものであることだけではなく、そのメッセージが改ざんされていないことを確認できます。署名を生成するには、ビジネス・サービスは関連付けられたデジタル署名資格証明を持つサービス・キー・プロバイダを持つ必要があります。
質問: SAML IDトークンを受信するアクティブな仲介プロキシ・サービスを構成しようとすると、必ず「The SAML token is not valid
」のようなエラーが表示されます。どのように修正すればよいですか。
回答: この問題は通常、そのプロキシ・サービスに対してSAML IDアサーション・プロバイダまたはSAML IDアサーション・プロバイダのアサーション側構成がないことが原因です。プロキシ・サービスがアクティブな仲介モードでSAMLアサーションを受信するには、SAML IDアサーション・プロバイダが構成されている必要があります。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のSAML IDアサーション・プロバイダの構成に関する項を参照してください。