Oracle® Fusion Middleware Oracle Web Services Manager拡張ガイド 11gリリース1 (11.1.1.9) B66193-02 |
|
![]() 前 |
![]() 次 |
Oracle Web Services Manager (Oracle WSM)では、Oracle Fusion Middlewareをインストールすると自動的に使用可能になる、一連の事前定義済ポリシーとアサーション・テンプレートを提供します。製品に含まれる標準ポリシーで特定の機能が提供されない場合に、カスタム・アサーションの開発が必要になることがあります。たとえば、Oracle WSMで提供されない種類の認証をアプリケーションで使用する必要が生じることがあります。この場合は、カスタム認証アサーションを作成する必要があります。このマニュアルでは、カスタム・アサーションの開発、デプロイおよびテストの方法について説明します。
この章のトピックは、次のとおりです。
Oracle Fusion Middleware 11gリリース1 (11.1.1)には、事前定義済ポリシーがパッケージされています。Oracle Fusion Middleware Webサービスのポリシーの詳細は、『Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。
各ポリシーは、ドメインレベルで定義された、セキュリティ要件を定義する1つ以上のアサーションで構成されます。そのまま使用できる事前定義済アサーションのセットが用意されています。事前定義済アサーションは、『Webサービスのためのセキュリティおよび管理者ガイド』の付録C「事前定義済アサーション・テンプレート」に説明されています。
既存の事前定義済アサーションの使用の詳細は、『Webサービスのためのセキュリティおよび管理者ガイド』のポリシー・アサーション・テンプレートの管理に関する項を参照してください。既存のアサーションを使用するほかに、Oracle WSMのAPIを使用して、独自のカスタム・アサーションを開発できます。
Webサービス・ポリシーは、次のいずれかの方法で作成できます。
既存のアサーション・テンプレートを使用して新しいポリシーを作成
既存のポリシーから新規ポリシーを作成
ファイルからポリシーをインポート
カスタム・アサーションからポリシーを作成
ポリシーを作成する最初の3つの方法は、『Webサービスのためのセキュリティおよび管理者ガイド』の「Webサービス・ポリシーの管理」に説明されています。このマニュアルでは、開発したカスタム・アサーションを使用してポリシーを作成する方法について説明します。
この項では、次の項目について説明します。
Webサービスはポリシーを使用して、機能と要件を指定します。ポリシーは、メッセージを確実に保護して提供する方法やメッセージがトランザクションをフローする必要があるかどうかを定義します。ポリシーはアサーションのセット(ルール、要件、義務)で、Webサービスの特定のポリシー要件やプロパティを表します。
ポリシー・アサーションは、ポリシーの個別の要件、機能またはプロパティを表す基本的な単位です。アサーションはドメイン固有のセマンティクスを使用して、相互運用性を有効にします。
ポリシー式はポリシーのXML表記です。ポリシー式は、wsp:Policy要素のコンテンツを形成する基本的なポリシー・アサーションの様々な論理的組合せから構成されます。論理的組合せは、ポリシー・オペレータ(wsp:Policy、wsp:Allおよびwsp:ExactlyOne要素)を使用して作成されます。
例1-1では、1つのアサーション(orasp:AssertionOne)を含むポリシー(wsp:Policy要素で定義済)を示しています。要素と属性のOracleの拡張機能の詳細は、付録A「カスタム・アサーションのスキーマ参照」を参照してください。
例1-1 1つのアサーションを含むポリシー
<wsp:Policy xmlns="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orasp="http://schemas.oracle.com/ws/2006/01/securitypolicy" > <orasp:AssertionOne orawsp:Silent="true" orawsp:Enforced="true" orawsp:name="Validator" orawsp:category="security/authentication"> ... </orasp:AssertionOne> </wsp:Policy>
例1-2では、ポリシー・オペレータのwsp:All要素(リスト内のすべてのポリシー・アサーションはtrueと評価される必要があります)によってラップされたポリシー・アサーションのリストを示しています。wsp:Policy要素はwsp:Allと同じ意味です。
例1-2 2つのアサーションとwsp:Allオペレータを含むポリシー
<wsp:Policy xmlns="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orasp="http://schemas.oracle.com/ws/2006/01/securitypolicy" > <wsp:All> <orasp:AssertionOne orawsp:Silent="true" orawsp:Enforced="true" orawsp:name="SAMLValidator" orawsp:category="security/authentication"> ... </orasp:AssertionOne> <orasp:AssertionTwo orawsp:Silent="true" orawsp:Enforced="true" orawsp:name="UserNameValidator" orawsp:category="security/authentication"> ... </orasp:AssertionTwo> </wsp:All> </wsp:Policy>
例1-3では、オペレータ<wsp:All>...</wsp:All>内の各行有効な代替ポリシーを表しています。代替ポリシーのいずれかのセットがtrueである場合、ポリシーを満たしています。
例1-3 多数のアサーションとwsp:ExactlyOneオペレータを含むポリシー
<wsp:Policy xmlns="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orasp="http://schemas.oracle.com/ws/2006/01/securitypolicy" > <wsp:ExactlyOne> <wsp:All> <orasp:SAML orawsp:Silent="true" orawsp:Enforced="true" orawsp:name="SAML" orawsp:category="security/authentication"> ... </orasp:SAML> </wsp:All> <wsp:All> <orasp:Username orawsp:Silent="true" orawsp:Enforced="true" orawsp:name="Username" orawsp:category="security/authentication"> ... </orasp:Username> </wsp:All> </wsp:ExactlyOne> </wsp:Policy>
オペレータおよびポリシー・アサーションの組合せを使用すると、複雑な代替ポリシーを作成できます。
表1-1では、準拠しているWebサービスの仕様と重要度に基づいたアサーション・カテゴリのリストを示しています。orasp:Assertion要素の属性であるorawsp:categoryを使用して、カテゴリを指定します。第3章「サンプル・カスタム・アサーションによる手順」では、セキュリティ・カスタム・アサーションの様々なカテゴリのサンプルを示しています。
表1-1 アサーション・カテゴリ
カテゴリ | 説明 | orawsp:categoryの有効な値 |
---|---|---|
セキュリティ |
SAML、KerberosおよびX.509などの様々なセキュリティ・トークン・フォーマットの通信を許可するWS-Security 1.0および1.1標準を実装するポリシー。これらの標準によって、ユーザーの認証と認可、アイデンティティ伝播およびメッセージ保護が実施されます。 |
security/authentication、security/msg-protection、security/authorization、security/logging |
MTOMアタッチメント |
MTOM形式のアタッチメントを含むポリシー。Message Transmission Optimization Mechanism(MTOM)形式によって、Webサービスとの間で送受信するバイナリ・データを効率的に転送できるようになります。 |
mtom |
信頼できるメッセージング |
WS-ReliableMessagingプロトコルをサポートしているポリシー。これにより、SOAPのメッセージ配信が保証されます。WS-ReliableMessagingは信頼できるメッセージング・ソースと信頼できるメッセージングの宛先を利用し、多数の配信保証をサポートします。詳細は、 |
wsrm |
WSアドレス |
Simple Object Access Protocol(SOAP)メッセージがWS-Addressingヘッダーを含み、Webサービスがアドレス情報をやり取りできるポリシー。 |
addressing |
管理 |
メッセージ・ログにリクエスト、レスポンスおよびフォルト・メッセージを記録するために使用される管理ポリシー。 |
management |
Enterprise Manager Fusion Middlware Controlを使用すると、様々なカテゴリのポリシーを表示、編集および管理できます。カテゴリのポリシーを特定のエンドポイントに対して添付できることに注意してください。カスタム・アサーションのバインディングのルールの詳細は、次の項を参照してください。
アサーションのバインディングを定義するために使用する<oraswsp:bindings要素とそのすべてのサブ要素の詳細は、『Webサービスのためのセキュリティおよび管理者ガイド』のorawsp:bindingsに関する項を参照してください。
カスタム・アサーションのライフサイクルには、初期化、実行、実行後の処理および終了処理の4段階があります。Oracle WSMランタイムはカスタム・アサーションのライフサイクルを管理します。各段階で、Oracle WSMランタイムはカスタム・アサーション・エグゼキュータのライフサイクルのメソッドを起動します。カスタム・ポリシーのカスタム・アサーション・エグゼキュータ内で、次のメソッドを実装する必要があります。
void init(IAssertion ia, IExecutionContext context, IContext msgContext): このメソッドは、AssertionExecutorが作成された後か、プロパティのいずれかが変更された後に呼び出されます。
IResult execute(IContext mcontext): このメソッドは、リクエスト、レスポンスおよびフォルトなどのステージで呼び出されます。このメソッドは、常に、null以外のIResultオブジェクトを返します。ポリシーの実行のステージの詳細は、「リクエスト、レスポンスおよびフォルト・メッセージ・オブジェクトへのアクセス」を参照してください。
IResult postExecute(IContext messageContext): ポリシー実行後に必要なタスクを実行します。
void destroy(): この破棄メソッドは、アプリケーションがシャットダウンを実行しているときに、Oracle WSMランタイムによって起動されます。アサーションのライフサイクルの終了時にクリーナとして起動されます。
ポリシー・オブジェクト・モデルは、次の2つのタイプのアサーションを定義します。
シンプル・アサーションには、アサーション(単一の動作を定義)が1つしか含まれません。他のアサーションを含めることはできません。シンプル・アサーションは、Oracleが定義する拡張機能を除いて、ネストされた要素が含まれていないorg.w3c.dom.Elementにマップします。シンプル・アサーションのクラスは、oracle.wsm.policy.model.ISimpleAssertionクラスを拡張します。ISimpleOracleAssertionは、WS-PolicyアサーションのためにOracleが定義した拡張機能を提供します。
使用方法
シンプル・アサーション:
Oracle拡張機能の要素の<orawsp:bindings>以外のネストされた要素を含めることはできません。
他のアサーションは含めることはできません。
デフォルトのシリアライザおよびデシリアライザを使用します。
デフォルトの実装クラスを使用します。
基本的なクラスのSimpleAssertionを拡張する必要があります。メソッドgetAssertionTypeは、新しいクラスを導入したときに適切な値を返す必要があります。
新しいクラスを導入したときにシリアライザとデシリアライザは不要です。
疑似スキーマ
バインディング要素しか含まれないシンプル・アサーションの疑似スキーマは次のとおりです。
<Assertion> [ wsp:Optional="xsd:boolean" ]? [ orawsp:Silent="xsd:boolean" ]? [ orawsp:Enforced="xsd:boolean" ]? [ orawsp:description="xsd:string" ]? [ orawsp:category="xsd:string" ]?...> <orawsp:bindings>? </Assertion>
複数要素のシンプル・アサーションは他のアサーションを含めることはできません。ただし、ネストされたXML要素を含むことがあります。複数要素のシンプル・アサーションは、ネストされた要素が含まれているorg.w3c.dom.ElementとOracleが定義する拡張機能要素にマップします。複数要素のシンプル・アサーションのクラスは、oracle.wsm.policy.model.IMultiElementSimpleAssertionクラスを拡張します。
使用方法
複数要素のシンプル・アサーション:
Oracle拡張機能の要素の<orawsp:bindings>以外のネストされた要素を含むことがあります。
他のアサーションを含めることができず、ドメイン固有の仕様で定義されます。ドメイン固有のインターセクション・セマンティクスが定義されている場合のみ、ネストされたXML要素がインターセクションに参加します。
疑似スキーマ
複数要素のシンプル・アサーションはバインディング以外の要素を含むことがあります。疑似スキーマは次のとおりです。
<Assertion> [ wsp:Optional="xsd:boolean" ]? [ orawsp:Silent="xsd:boolean" ]? [ orawsp:Enforced="xsd:boolean" ]? [ orawsp:description="xsd:string" ]? [ orawsp:category="xsd:string" ]?...> <other-xml-elements>+ <orawsp:bindings>? </Assertion>