ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Web Services Manager拡張ガイド
11gリリース1 (11.1.1.6)
B66193-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前へ
前へ
 
次へ
次へ
 

1 ポリシーとアサーションについて

Oracle Web Services Manager (Oracle WSM)では、Oracle Fusion Middlewareをインストールすると自動的に使用可能になる、一連の事前定義済ポリシーとアサーション・テンプレートを提供します。製品に含まれる標準ポリシーで特定の機能が提供されない場合に、カスタム・アサーションの開発が必要になることがあります。たとえば、Oracle WSMで提供されない種類の認証をアプリケーションで使用する必要が生じることがあります。この場合は、カスタム認証アサーションを作成する必要があります。このマニュアルでは、カスタム・アサーションの開発、デプロイおよびテストの方法について説明します。

この章のトピックは、次のとおりです。

1.1 事前定義済のポリシーとアサーション

Oracle Fusion Middleware 11gリリース1 (11.1.1)には、事前定義済ポリシーがパッケージされています。Oracle Fusion Middleware Webサービスのポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。

各ポリシーは、ドメインレベルで定義された、セキュリティ要件を定義する1つ以上のアサーションで構成されます。そのまま使用できる事前定義済アサーションのセットが用意されています。事前定義済アサーションは、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』の付録C「事前定義済のアサーション・テンプレート」に説明されています。

既存の事前定義済アサーションの使用の詳細は、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』のポリシー・アサーション・テンプレートの管理に関する項を参照してください。既存のアサーションを使用するほかに、Oracle WSMのAPIを使用して、独自のカスタム・アサーションを開発できます。

1.2 ポリシーの作成

Webサービス・ポリシーは、次のいずれかの方法で作成できます。

ポリシーを作成する最初の3つの方法は、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』のWebサービス・ポリシーの管理に関する項に説明されています。このマニュアルでは、開発したカスタム・アサーションを使用してポリシーを作成する方法について説明します。

1.3 カスタム・アサーションについて

この項では、次の項目について説明します。

1.3.1 ポリシー、アサーション、式およびオペレータ

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.3.2 アサーション・カテゴリについて

表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は信頼できるメッセージング・ソースと信頼できるメッセージングの宛先を利用し、多数の配信保証をサポートします。詳細は、http://docs.oasis-open.org/ws-rx/wsrm/200702のWS-ReliableMessaging仕様を参照してください。

wsrm

WSアドレス

Simple Object Access Protocol(SOAP)メッセージがWS-Addressingヘッダーを含み、Webサービスがアドレス情報をやり取りできるポリシー。

addressing

管理

メッセージ・ログにリクエスト、レスポンスおよびフォルト・メッセージを記録するために使用される管理ポリシー。

management


Enterprise Manager Fusion Middlware Controlを使用すると、様々なカテゴリのポリシーを表示、編集および管理できます。カテゴリのポリシーを特定のエンドポイントに対して添付できることに注意してください。カスタム・アサーションのバインディングのルールの詳細は、次の項を参照してください。

1.3.3 カスタム・アサーションのバインディングのルール

アサーションのバインディングを定義するために使用する要素の詳細は、『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』のorawsp:bindingsに関する項を参照してください。

1.3.4 カスタム・アサーションのライフサイクル

カスタム・アサーションのライフサイクルには、初期化、実行、実行後の処理および終了処理の4段階があります。Oracle WSMランタイムはカスタム・アサーションのライフサイクルを管理します。各段階で、Oracle WSMランタイムはカスタム・アサーション・エグゼキュータのライフサイクルのメソッドを起動します。カスタム・ポリシーのカスタム・アサーション・エグゼキュータ内で、次のメソッドを実装する必要があります。

  1. void init(IAssertion ia, IExecutionContext context, IContext msgContext): このメソッドは、AssertionExecutorが作成された後か、プロパティのいずれかが変更された後に呼び出されます。

  2. IResult execute(IContext mcontext): このメソッドは、リクエスト、レスポンスおよびフォルトなどのステージで呼び出されます。このメソッドは、常に、null以外のIResultオブジェクトを返します。ポリシーの実行のステージの詳細は、リクエスト、レスポンスおよびフォルト・メッセージ・オブジェクトへのアクセスに関する項を参照してください。

  3. IResult postExecute(IContext messageContext): ポリシー実行後に必要なタスクを実行します。

  4. void destroy(): この破棄メソッドは、アプリケーションがシャットダウンを実行しているときに、Oracle WSMランタイムによって起動されます。アサーションのライフサイクルの終了時にクリーナとして起動されます。

1.3.5 カスタム・アサーションのタイプ

ポリシー・オブジェクト・モデルは、次の2つのタイプのアサーションを定義します。

1.3.5.1 シンプル・アサーション

シンプル・アサーションには、アサーション(単一の動作を定義)が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>

1.3.5.2 複数要素のシンプル・アサーション

複数要素のシンプル・アサーションは他のアサーションを含めることはできません。ただし、ネストされた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>