Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護のユース・ケース 12c (12.2.1.3.0) E90180-02 |
|
![]() 前 |
![]() 次 |
この章に示されているユース・ケースを参照して、SAMLメッセージ保護を使用してインバウンドSOAPリクエストを保護する方法を理解できます。SAMLメッセージ保護を実装するには、WebLogic Serverユーザーの作成、Javaキーストアの作成などの一連のタスクを実行する必要があります。
ユース・ケースの説明、ソリューションのサマリー、関連するコンポーネントおよびリンクされたドキュメント・リソースを参照して、SAMLベースの認証を使用したインバウンドSOAPリクエストを保護できます。
次の目的のためにインバウンドSOAPリクエストを保護します。
メッセージ・レベルの保護(つまり、メッセージの整合性とメッセージの機密性)を実行します。
WS-Security 1.1標準に従ったインバウンドSOAPリクエストのSAMLベース認証を提供します。
WS-Security 1.1に準拠しているOracle Web Services Manager (OWSM) SAMLポリシーをWebサービスおよびクライアントにアタッチして、必要なキーおよびキーストアを構成します。
Oracle Fusion Middleware
Oracle Web Services Manager(OWSM)
保護するWebサービスおよびクライアント・アプリケーション
このユース・ケースを完了するには、次のドキュメント・リソースを参照してください。
Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理
Oracle Web Services Managerの理解
http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html
のkeytool
Javadoc
このユース・ケースは、次の操作に必要な手順を示します。
インバウンドSOAPリクエストのSAMLベース認証を使用したメッセージ・レベルの保護を実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。
wss11_saml_token_with_message_protection_client_policy
wss11_saml_token_with_message_protection_service_policy
必要なキーおよびキーストアを構成します。
メッセージは、WS-Securityの対称鍵テクノロジのBasic 128スイートを使用して保護されます。具体的には、RSA鍵メカニズム(メッセージの機密性)、SHA-1ハッシュ・アルゴリズム(メッセージの整合性)、およびAES-128ビットの暗号化が使用されます。そのため、keytool
(またはその他のツール)を使用してこのポリシーに必要な署名や暗号化鍵を作成する場合は、必ずRSA鍵メカニズム、SHA-1アルゴリズム、そしてAES-128ビット暗号化を使用して、キーのポリシー要件を満たす必要があります。サポートされているアルゴリズム・スイートの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のサポートされているアルゴリズム・スイートに関する項を参照してください。
Webサービスを構成する前に、必要な秘密鍵および証明書のタイプ、鍵およびキーストアの名前を決定する必要があります。それから、それらに従って環境を設定できます。
次の項では、SAMLメッセージ保護のユース・ケースの追加のバックグラウンドについて説明します。
詳細は、「Oracle Web Services Managerの理解」の鍵と証明書の理解に関する項とwss11に関する項を参照してください。
対称鍵暗号は、単一の共有秘密鍵に依存します。クライアントは、対称鍵を作成し、それを使用して署名してメッセージを暗号化し、Webサービスの証明書を使用して対象鍵を暗号化し、それをリクエスト・メッセージでWebサービスと共有します。Webサービスはリクエスト・メッセージ内の対称鍵を使用して、リクエスト・メッセージの署名を検証してそれを復号化し、それからレスポンス・メッセージに署名して暗号化します。
次のプロセス・フローを考慮します。
リクエストを作成するため、OWSMエージェントは次の手順を実行します。
共有の対称鍵を生成し、それを使用してリクエスト・メッセージの署名と暗号化の両方を行います。
その独自の秘密鍵を使用して、リクエスト・メッセージの署名を裏書きします。
Webサービスの公開鍵を使用して、対称鍵を暗号化します。
対称鍵をリクエストとともにWebサービスに送信します。クライアントはリクエストで公開鍵を送信して、Webサービスがその署名を検証できるようにします。
Webサービスがリクエストを受け取った場合、次の手順を実行します。
秘密鍵を使用して対称鍵を復号化します。
対称鍵を使用して署名を検証するためにリクエスト・メッセージを復号化します。
リクエスト・メッセージ内のクライアントの公開鍵を使用して、その裏書署名を検証します。
クライアントにレスポンスを送信するため、Webサービスは次の手順を実行します。
リクエストとともに送信されたクライアントが生成した同じ対称鍵を使用して、レスポンス・メッセージに署名します。
クライアントが生成した同じ対称鍵を使用して、レスポンス・メッセージを暗号化します。
OWSMエージェントはレスポンス・メッセージを受け取ると、次のことを行います。
最初に生成した対称鍵を使用して、レスポンス・メッセージを復号化します。
最初に生成した対称鍵を使用して、レスポンス・メッセージの署名を検証します。
クライアントとWebサーバーが、同じキーストアにアクセスする同じドメインにある場合は、同じ秘密/公開鍵のペアを共有できます。
特に、クライアントは、秘密鍵orakey
を使用してリクエスト・メッセージの署名を裏書きし、公開鍵orakey
を使用して対称鍵を暗号化できます。次に、Webサービスが公開鍵orakey
を使用して裏書きを検証し、秘密鍵orakey
を使用して対称鍵を復号化します。
クライアントとWebサーバーが同じドメインになく、同じキーストアにアクセスしない場合は、クライアントとWebサービスは各自が秘密/公開鍵のペアを持つ必要があります。
表2-1に示すように、複数ドメインのユース・ケースで要件について考慮します。
表2-1 複数ドメインのユース・ケース要件
Webサービス・クライアント | Webサービス |
---|---|
クライアントのキーストアに独自の秘密/公開鍵のペアが必要です。 |
サービス・キーストアに独自の秘密/公開鍵のペアが必要です。 |
Webサービスの公開鍵が必要です。 |
クライアントのキーストア内の公開鍵に対応する中間証明書とルート証明書が必要です。 これらの証明書を使用して、信頼される証明チェーンを生成して署名を検証します。 |
実行時の対称鍵の生成 |
対称鍵が必要ですが、これはリクエスト・メッセージで送信されます。 |
クライアントが対称鍵を暗号化するために使用する公開鍵、つまりWebサービスの公開鍵については、次の2つのアプローチがあります。
Webサービス・クライアントが使用できるように、Webサービスのbase64エンコード形式の公開証明書がWSDLで発行されます。詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のサービス・アイデンティティ証明書拡張の使用に関する項を参照してください。この使用方法では、Webサービスの公開鍵はクライアントのキーストアになくても構いません。
証明書がWSDLでパブリッシュされていない場合、「構成」
ページでkeystore.recipient.aliasの値を指定できます。または、ポリシーを添付するときに「セキュリティ構成の詳細」コントロールを使用して、クライアントごとにこの値をオーバーライドできます。キーストア受信者の別名は、アウトバウンドSOAPメッセージの暗号化用のキーを取得するときにキーストア内の公開鍵を検索するために使用される別名を指定します。この方法では、Webサービスの公開鍵はクライアントのキーストアにある必要があります。
クライアント・ポリシーのsaml.issuer.name
プロパティは、SAMLトークンの発行者を特定し、そのデフォルトはwww.oracle.com
という値です。オプションで、「構成」ページでsaml.issuer.name
の値を指定できます。または、ポリシーを添付するときに「セキュリティ構成の詳細」コントロールを使用して、クライアントごとにこの値をオーバーライドできます。
ポリシーで別のSAML認証局(発行者)を使用する場合は、その発行者名をクライアントで構成し、SAMLログイン・モジュール内の使用可能な発行者のリストに含める必要があります。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSAMLアサーション発行者名の追加に関する項を参照してください。
SAMLメッセージ保護を実装するには、WebLogic Serverユーザーの作成、Javaキーストアの作成、OWSMキーストアの構成、復号化キーのパスワードの資格証明ストアへの格納、ポリシーのWebサービスおよびWebサービス・クライアントへの添付という一連のタスクを実行する必要があります。
SAMLメッセージ保護を実装する前に、製品コンポーネントをダウンロードしてインストールし、WebLogicドメインを構成し、管理サーバーを起動し、Oracle Enterprise Manager Fusion Middleware ControlおよびOracle WebLogic Server管理コンソールへのアクセス権を取得します。
開始する前に、次のタスクが実行されていることを確認してください。
SAMLトークンのユーザーがWebLogic Serverアイデンティティ・ストアに存在することを確認します。存在しない場合は作成する必要があります。WebLogic Server管理コンソールを使用してアイデンティティ・ストアにユーザーを追加します。
詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのユーザーの作成に関する項を参照してください。
Webサービスのランタイムは、WS-SecurityヘッダーからSAMLトークンを抽出し、SAMLトークン内の名前を使用してWebLogic Serverアイデンティティ・ストアに対してユーザーを検証します。特に、SAMLログイン・モジュールは、Webサービスに代わってSAMLトークンを検証します。次に、SAMLログイン・モジュールは認証を完了するために、検証されたトークンからユーザー名を抽出し、Oracle Platform Security Services (OPSS)に(間接的に)渡します。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の「Fusion Middleware Controlを使用したSAMLおよびSAML2ログイン・モジュールの構成」を参照してください。
デフォルトの認証プロバイダなど、構成済のWebLogic Server認証プロバイダをここで呼び出すことができます。
キーストアを作成し、秘密鍵および信頼できるCA証明書をロードします。keytool
ユーティリティを使用してJavaキーストアを作成および管理できます。
このユース・ケースでは、JKSキーストアを使用します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の秘密鍵の生成とJavaキーストアの作成に関する項を参照してください。
注意:
次のタスクのいずれかを実行する場合、別名を指定します。
-genkey
コマンドを使用してエンティティをキーストアに追加し、鍵ペアを生成します(公開鍵と秘密鍵)。
-import
コマンドを使用して、証明書または証明書チェーンを信頼できる証明書のリストに追加します。
これ以後、keytool
コマンドでエンティティを参照する場合は、このときに指定した別名を使用する必要があります。
OWSMでは、KSS、JKS、HSMおよびPKCS11キーストアがサポートされます。キーストアを作成した後、OWSMを構成してキーストアにアクセスおよび使用できるようにする必要があります。configureWSMKeystoreコマンドを使用して、OWSMキーストアを構成できます。
JKSキーストアを使用するようにOWSMを構成すると、資格証明マップoracle.wsm.securityおよび定義するすべてのキーについて、資格証明ストア内にエントリが作成されます。
ドメインごとに単一のOWSMキーストアが存在し、ドメイン内で実行するすべてのWebサービスおよびクライアントによってそのキーストアが共有されることに注意してください。
OWSMキーストアを構成する方法の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のOWSMキーストアの構成に関する項を参照してください。
復号化キーのパスワードを資格証明ストアに格納します。キー名としてkeystore.enc.csf.key
を使用します。
完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の資格証明ストアへの鍵およびユーザー資格証明の追加に関する項を参照してください。
wss11_saml_token_with_message_protection_service_policy
をWebサービスにアタッチして、メッセージ署名およびメッセージ暗号化に対してポリシー・アサーションを構成します。
完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。
デフォルトでは、ポリシーによってリクエストおよびレスポンスの本体全体が署名および暗号化されます。署名および暗号化する個々の本体要素を指定するオプションがあります。また、署名および暗号化するヘッダー要素を指定できます。必要に応じてメッセージの署名および暗号化を構成できます。ただし、クライアント・ポリシー設定と一致する必要があります。
ポリシーの構成の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/wss11_saml_token_with_message_protection_service_policyに関する項を参照してください。
wss11_saml_token_with_message_protection_client_policy
をWebサービス・クライアントにアタッチし、メッセージの署名、メッセージの暗号化あるいはその両方のポリシー・アサーションを構成します。
完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。
デフォルトでは、ポリシーによってリクエストおよびレスポンスの本体全体が署名および暗号化されます。署名および暗号化する個々の本体要素を指定するオプションがあります。また、署名および暗号化するヘッダー要素を指定できます。必要に応じてメッセージの署名および暗号化を構成できます。ただし、サービス・ポリシー設定と一致する必要があります。
クライアント・ポリシーのsaml.issuer.name
プロパティは、SAMLトークンの発行者を特定し、そのデフォルトはwww.oracle.com
という値です。このユースケースでは、www.oracle.com
デフォルトを使用します。saml.issuser.name
プロパティのオーバーライドの詳細は、SAML発行者をオーバーライドするタイミングを参照してください。
ポリシーの構成の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/wss11_saml_token_with_message_protection_client_policyに関する項を参照してください。