ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Web Services Manager拡張可能アプリケーションの開発
12c (12.1.3)
E59425-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

1 ポリシーとアサーションの理解

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

この章の内容は次のとおりです。

このマニュアルおよびこの他のマニュアルに、なじみのない用語が出てきた場合は、用語集で定義を確認してください。

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

OWSMは、Oracle Fusion Middlewareで読取り専用の事前定義されたポリシーを提供します。OWSMポリシーの詳細および使用の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

各ポリシーは、ドメインレベルで定義された、セキュリティ要件を定義する1つ以上のアサーションで構成されます。すぐに使用できる事前定義済アサーション・テンプレートが提供されます。事前定義されたアサーション・テンプレートについては、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の事前定義されたアサーション・テンプレートに関する項で説明しています。

事前定義されたアサーションの使用については、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアサーション・テンプレートの管理に関する説明を参照してください。既存のアサーションを使用する他に、OWSMのAPIを使用して、独自のカスタム・アサーションを開発できます。

ポリシーの作成

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

  • 既存のアサーション・テンプレートを使用して新しいポリシーを作成

  • 既存のポリシーから新規ポリシーを作成

  • zipアーカイブからポリシーをインポート

  • カスタム・アサーションからポリシーを作成

ポリシーを作成する最初の3つの方法は、『Oracle Web Services Managerによる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

管理

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

management


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

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

アサーションのバインディングを定義するために使用する<orawsp:bindings要素の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のorawsp:bindingsに関する説明を参照してください。

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

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

  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(): この破棄メソッドは、アプリケーションがシャットダウンを実行しているときに、OWSMランタイムによって起動されます。アサーションのライフサイクルの終了時にクリーナとして起動されます。

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

ポリシー・オブジェクト・モデルは、次の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>