26 Webサービスの保護
OWSMに関する情報の完全なライブラリについては、Oracleヘルプ・センターの「Oracle Fusion Middleware 12c (12.1.3) Oracle Web Services Manager - タスク」を参照してください。
注意:
ここに示す例を実行する前に、「JCS - SaaS Extensionを使用した開発用のIDEの構成」内のタスクをまだ実行していない場合は、これらのタスクを実行してください。
Webサービスでのデザインタイム・セキュリティ追加機能の実装
この項では、Oracle Web Services Manager (OWSM)のポリシーに関する高度な概念的な情報とともに、注釈および機能クラスなどのデザインタイム追加機能を使用したSOAPおよびREST Webサービスへのポリシーのアタッチに関連する良い点と悪い点を示します。この項ではまた、JCS - SaaS ExtensionとOracle Sales Cloudの両方の境界にまたがる環境内でアプリケーションが実行されることが想定される場合のポリシー選択に関する情報も提供します。
デザインタイム・セキュリティまたはランタイム・セキュリティの使用
Webサービスをプログラミングしている場合はおそらく、Webサービスおよびその操作に関するポリシー・ファイルを把握していると思われます。この場合、注釈または機能クラス(あるいはその両方)を使用して、これらのデザインタイム・セキュリティの追加機能を作成します。ただし、まれに、設計時にどのポリシー・ファイルを使用すべきか確信がない場合や、別のポリシーの追加またはすでにアタッチ済みのポリシーのオーバーライドによってポリシー選択を変更する必要性に気付いた場合、実行時までその判断を下すのを保留できます。Webサービスがデプロイされた後、JCS - SaaS Extension SDK (Software Development Kit)に用意されているコマンド・ライン・インタフェース(CLI)を使用して、適切なポリシー・ファイルを関連付けることができます。
設計時にはセキュリティ追加機能を指定することが一般的ですが、注釈の組込みや機能クラスの使用を一切せずにWebサービスを作成し、実行時にのみポリシー・ファイルを関連付けることや、注釈や機能クラスを使用してポリシー・ファイルを指定してから実行時に追加して関連付けることもできます。このような方法は可能ですが、推奨される方法ではありません。セキュリティに関する決定はアプリケーションの開発時に行ってから、設計時に追加する必要があり、後で思いつきとして追加すべきではありません。
実行時には、ポリシー・ファイル内のポリシー・アサーションが互いに矛盾していたり、注釈に関連付けられたポリシー・ファイル内のアサーションと矛盾していたりしても、必要な数のポリシー・ファイルをいくつでもWebサービスおよびその操作に関連付けることができます。関連する複数のポリシー・ファイルが連携して機能することを確認するかどうかの判断は自分次第です。矛盾が存在する場合、クライアント・アプリケーションがWebサービス操作を起動したときにランタイム・エラーが返されます。これが、このような競合が発生しないことを確認でき、設計時に決定事項を実装できる場合に、セキュリティに関する決定を開発プロセスの初期に慎重に計画した方がよいもう1つの理由です。
OWSMポリシーの使用
Oracle Fusion Middlewareスタックに組み込まれたコンポーネントの1つであるOracle Web Services Manager (OWSM)には、Oracle Weblogic Serverインフラストラクチャにデプロイされているアプリケーションによって公開されるWebサービスを保護およびアクセスする方法を提供します。必要な下位レベルのセキュリティ・コンポーネントをサーバー・ポリシーとクライアント・ポリシーの管理可能な個別ユニットにパッケージ化することにより、OWSMでは、アプリケーションに関する効果的なセキュリティ保護およびアクセス制御を構築するために、微細な技術詳細を評価する作業から開発者と管理者を解放します。JCS - SaaS ExtensionおよびOracle Sales CloudはOracle Fusion Middlewarプラットフォーム上で動作するため、これらは両方ともOWSMを活用できます。
関連するサービス間のWebサービス・リクエストの認証は、OWSMフレームワークによって行うことができます。OWSMを使用すると、関連するサービス間の相互作用を保護するために必要な設定を最小限に抑えやすくなります。セキュリティ・トークンは、OWSMによってSaaSまたはPaaS側で生成できます。
事前作成された6つのOWSMクライアント・ポリシーがこのサーバー・ポリシーと互換性を持ちますが、本番事例の大部分では、使用に最適なのはSecurity Assertion Markup Language (SAML) saml_tokenのクライアント・ポリシーです。たとえば、Oracle Sales Cloudの場合、外部に公開されたWebサービスの大部分は、伝送路経由でユーザー認証とメッセージ保護の両方を実現するOWSMサービス・ポリシーであるoracle/wss11_saml_or_username_token_with_message_protection_service_policyによって保護されます。「Oracle Sales Cloud SOAP Webサービスのクライアントのセキュリティ・ポリシーの選択」を参照してください。JCS - SaaS ExtensionにデプロイされているWebサービス・アプリケーションに対して同じポリシーを採用することを選択したり、ニーズにより適した異なるポリシーを使用したりできます。
認証のタイプ
サービス間でユーザー・アイデンティティを認証するために次のメカニズムを使用できます。
-
Security Assertion Markup Language (SAML)トークン: SAMLは、関連するサービス用として推奨される認証テクノロジです。アイデンティティ・プロバイダとして指定されたサービスは、関連するサービス・プロバイダからのリクエストを認証し、ユーザー・アイデンティティを確立します。認可は、確立されたアイデンティティに基づいています。SAMLは通常、関連するサービス間のSOAPメッセージとともに使用されます。関連するOracle Cloudサービスは、SAML認証用としてOWSMを使用できます。
-
ユーザー名トークンまたはHTTP基本認可: 関連付けられていないかOWSMを使用していないサービスの場合、ユーザー名トークン(OAuthトークンなど)、またはSSL接続を介して渡されたIDを使用した基本認可が可能です。ユーザー名トークン・ポリシーには、送信Webサービス・リクエスト・メッセージの一部としてヘッダーにユーザー資格証明が含まれます。HTTP基本ポリシーは、送信リクエストのHTTPヘッダー・セクションに資格証明を渡します。
JCS - SaaS Extension CLIを使用した実行時のセキュリティ・ポリシーのアタッチ、デタッチおよびオーバーライド
JCS - SaaS Extension SDKは、JCS - SaaS Extensionインスタンスの管理およびJCS - SaaS Extension用のアプリケーションの開発のためのコマンド・ライン・ベースのユーティリティを備えたダウンロード可能なパッケージです。
アプリケーションおよびドメイン構成シェルを使用すると、一般的なWebサービス構成タスクを実行できます。CLIコマンドを使用して、JCS - SaaS ExtensionインスタンスのWebLogicドメインで実行されているWebサービスおよびWebサービス・クライアントに対して複数のタスクを実行できます。これらのタスクには、実行中のすべてのWebサービスおよびWebサービス・クライアントのリスト、使用可能なすべてのOWSMポリシーのリスト、Webサービス・エンドポイントとWebサービス・クライアント・ポート上のポリシーの管理、およびWebサービス構成とポリシー・オーバーライドの設定が含まれます。
また、構成シェルを使用して、ドメイン内のWebサービスおよびWebサービス・クライアント上のOWSMポリシーを有効化、無効化、アタッチ、デタッチおよびオーバーライドすることもできます。
WebサービスまたはWebサービス・クライアントにアタッチされたOWSMセキュリティ・ポリシーをオーバーライドする方法の詳細は、「実行時のOWSMセキュリティ・ポリシーのオーバーライド」を参照してください。
注釈を使用したOWSMポリシーのアタッチ
weblogic.wsee.jws.jaxws.owsm.SecurityPolicy
(@Security Policy
)を使用して単一のポリシーまたはweblogic.wsee.jws.jaxws.owsm.SecurityPolicies
(@SecurityPolicies
)を複数のポリシーにアタッチすることにより、設計時にJava EE Webサービスおよびクライアントにセキュリティ・ポリシーをアタッチできます。Java EE Webサービスに対してはOWSMポリシーのサブセットのみがサポートされています。
Java EE Webサービスの場合、クラス・レベルでのみOWSMセキュリティ・ポリシーをアタッチできます。Java EE Webサービス・クライアントの場合、java.xml.ws.WebServiceRef
注釈を使用して定義されたWebサービス・インジェクション・ターゲットにOWSMポリシーをアタッチできます。「注釈を使用したSOAP WebサービスへのOWSMポリシーのアタッチ」および「注釈を使用したREST WebサービスへのOWSMポリシーのアタッチ」を参照してください。
注意:
機能クラスを使用したJava EE Webサービス・クライアントへのOWSMセキュリティ・ポリシーのアタッチは、注釈より優先されます。
機能クラスを使用したOWSMポリシーのアタッチ
設計時に機能クラスを使用してOWSMポリシーをアタッチする場合、クライアント・アプリケーションがデプロイされた後にポリシーを追加または変更することはできません。デプロイメント後にポリシーを追加または変更するには、設計時に注釈を使用してWebサービス・クライアントにOWSMポリシーをアタッチする必要があります。「機能クラスを使用したWebサービス・クライアントへのOWSMポリシーのアタッチ」を参照してください。
異種環境での実行時のポリシー選択に関する考慮事項
JCS - SaaS ExtensionとOracle Cloud SaaSサービスの境界にまたがる異種環境でアプリケーションがWebサービスを使用してデータを公開している場合、OWSMセキュリティ・ポリシーの使用によって得られるメリットを活用することにより、アクセスを制限し、Webサービスによって公開されるデータを保護する必要があります。
認証または認可(あるいはその両方)を最初から実装したり、境界をまたがって機能するか心配したりする必要はありません。これらは、複数の環境にわたってすでに完全にテストされています。
注釈および機能クラスを使用して設計時のみにおけるセキュリティの追加機能としてこの保護を柔軟に追加したり、設計時に何らかの保護を追加してから実行時に別の保護を宣言して追加したり、設計時には保護を追加せずに実行時にのみ保護を追加したりすることが可能です。
このような理由により、OWSMセキュリティ・ポリシーを使用してWebサービスおよびWebサービス・クライアントを保護することをお薦めします。
注釈を使用したSOAP WebサービスへのOWSMポリシーのアタッチ
ポリシー注釈をJavaクラスに直接追加することにより、SOAP WebサービスにOWSMセキュリティ・ポリシーをアタッチできます。
Oracle JDeveloperで注釈を使用してSOAP Webサービス・クライアントにOWSMポリシーをアタッチする手順:
-
ソース・エディタでWebサービス・クライアントを開きます。
-
インジェクション・ターゲット行にカーソルを置き、マウスを右クリックし、コンテキスト・メニューから「JEEクライアント・ポリシー注釈の追加」を選択します。
OWSMセキュリティ・ポリシーのリストが含まれる「クライアント・ポリシー構成」ウィンドウが表示されます。
-
クライアントにアタッチするセキュリティ・ポリシーを選択します。
OWSMポリシーをアタッチする場合、ポリシーおよびそのアサーションに関する追加情報を参照できます。
-
「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。
-
「ビュー」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。
-
「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。
-
「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。
-
-
「OK」をクリックします。
クライアント・コードは、適切な注釈を使用して更新されます。
注釈を使用したREST WebサービスへのOWSMポリシーのアタッチ
REST Webサービスを保護するために、OWSMで事前定義済のセキュリティ・ポリシーの1つをアタッチできます。
REST Webサービス・クライアントを保護するために、OWSMで事前定義済のセキュリティ・ポリシーの1つをアタッチできます。
「クライアント・ポリシー構成」ダイアログでRESTクライアントにOWSMポリシーをアタッチする手順:
-
「アプリケーション」ウィンドウで、「アプリケーション・ソース」フォルダにあるREST Webサービス・クライアント・ファイルを右クリックします。
-
「セキュアRESTfulクライアント」を選択します。
「クライアント・ポリシー構成」ダイアログが開きます。
-
リストからセキュリティ・ポリシーを選択します。
アタッチできるのは、1つの認証ポリシーおよび1つの認可ポリシーのみです。
-
「OK」をクリックします。
クライアント内の
customizeClientConfiguration
メソッドが更新され、ポリシー・アタッチメントが組み込まれます。
OWSMポリシーをアタッチする場合、ポリシーおよびそのアサーションに関する追加情報を参照できます。
-
「説明の表示」チェック・ボックスをクリックし、各ポリシーの説明を表示します。
-
「ビュー」をクリックし、ポリシー・ファイル内のポリシー・アサーションをレビューします。
-
「選択されたポリシーの表示」チェック・ボックスをクリックし、現在選択されているポリシーのみを表示します。
-
「選択用に互換性のあるクライアント・ポリシーのみ表示。」チェック・ボックスをクリックし、関連するWebサービスと互換性のあるポリシーを表示します。
機能クラスを使用したWebサービス・クライアントへのOWSMポリシーのアタッチ
機能クラスをWebサービス・クライアントに手動で追加することにより、WebサービスにOWSMセキュリティ・ポリシーをアタッチできます。 weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature
クラスを使用して単一のポリシーをアタッチするか、weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature
を使用して複数のポリシーをアタッチします。@SecurityPolicy
注釈を使用してOWSMセキュリティ・ポリシーをアタッチするときに、@Property
注釈を使用して設計時にOWSMセキュリティ・ポリシーのデフォルトの構成プロパティをプログラムでオーバーライドできます。
注意:
設計時に機能クラスを使用してOWSMポリシーをアタッチする場合、クライアント・アプリケーションがデプロイされた後にポリシーを追加または変更することはできません。デプロイメント後にポリシーを追加または変更するには、設計時に注釈を使用してWebサービス・クライアントにOWSMポリシーをアタッチするか、デプロイメント後にWebサービス・クライアントにOWSMポリシーをアタッチする必要があります。
RESTful Webサービスへのポリシーのアタッチ
OWSMポリシーを使用して、JCS - SaaS ExtensionにデプロイされているRESTful Webサービスを保護できます。
OWSMを使用してRESTful Webサービスを保護するには、次のいずれかのOWSM WSポリシーを使用します。
-
oracle/multi_token_over_ssl_rest_service_policy
: このポリシーでは、クライアントによって送信されたトークンに基づいて、HTTP基本(ユーザー名/パスワード)、SAML 2.0ベアラー・トークン、HTTP OAMセキュリティおよびJWTトークン・セキュリティの認証ポリシーのうち正確に1つを施行します。このポリシーはまた、HTTP基本、SAML 2.0ベアラー・トークンまたはJWTトークンの認証ポリシーが使用されている場合、トランスポート・プロトコルがHTTPSであることを検証します。 -
oracle/multi_token_rest_service_policy
: このポリシーでは、クライアントによって送信されたトークンに基づいて、HTTP基本(ユーザー名/パスワード)、SAML 2.0ベアラー・トークン、HTTP OAMセキュリティおよびJWTトークン・セキュリティの認証ポリシーのうち正確に1つを施行します。
「Oracle Web Services Managerを使用したWebサービスの保護およびポリシーの管理」には、Webサービスを保護するためのOWSMの機能に関する広範なドキュメントが含まれています。Oracle PaaSにも同じOWSM機能が用意されているため、「サーブレット・アプリケーションへのポリシーの直接アタッチ」に詳述されているアプローチを使用してRESTful Webサービスを保護できます。
実行時のOWSMセキュリティ・ポリシーのオーバーライド
実行時にJCS - SaaS Extension SDKのコマンド・ラインを使用して、注釈を使用して設計時にWebサービスまたはWebサービス・クライアントにアタッチされたOWSMセキュリティ・ポリシーをオーバーライドします。
JCS - SaaS Extension SDKにパッケージされているコマンド・ライン・インタフェース(CLI)では、通常はOracle Fusion Middleware ControlまたはOracle WebLogic Scripting Tool (wlst
)のオンプレミス・バージョンで使用可能であるアプリケーションとドメインの管理および構成機能が公開されています。CLIにこれらの機能が含まれているため、Webベースの管理ツール間の管理上のギャップが埋められます。SDKに含まれる実行可能なJARファイルであるjavacloud.jar
には、様々なアプリケーション構成タスクを実行できる構成シェルであるconfig-shell
が含まれています。構成シェル内の複数のタスクにより、Webサービスを提供またはコールするアプリケーションを、Oracle Web Services Manager (OWSM)ポリシーを使用して構成できるようになります。
JCS - SaaS Extensionにデプロイされたアプリケーション内のWebサービスをこれらのconfig-shell
コマンドによって構成できるかどうかは、アプリケーションがWebサービスを参照する方法によって異なります。wlst
がアプリケーション内のWebサービスのポリシー設定を読取りおよび書込みできる場合(オンプレミス・デプロイメントが前提)、config-shell
コマンドでこれらの設定を管理することもできます。同様に、アプリケーションWebサービスをOracle Fusion Middleware Controlで管理できる場合(この場合もオンプレミス・デプロイメントが前提)、CLI config-shell
コマンドを使用してこれらを管理することもできます。
一般的なconfig-shell
セッションを次に示しますが、この間、アプリケーション公開済WebサービスはOWSMセキュリティ・ポリシーを使用して構成されます。
注意:
ここでは、サーバー側のWebサービス・ポリシーのメンテナンスのみを示しますが、config-shell
を使用したWebサービス・クライアントのメンテナンスも非常に似ています。シェル・コマンドのわずかな相違の詳細は、ツールのオンライン・ヘルプを参照してください。WebサービスにアタッチされたOWSMセキュリティ・ポリシーをオーバーライドする手順:
OWSMポリシーを使用したRESTfulサーブレット・アプリケーションの保護
Oracle Web Services Manager (OWSM)を使用して、RESTfulサーブレット・アプリケーションを管理および保護できます。OWSMには、Webサービス・ポリシーを構築、強制、実行および監視するための機能を備えたポリシー・フレームワークが用意されています。
サーブレット・アプリケーションにポリシーを直接アタッチする手順: