1 Oracle Web Services Managerのポリシーとアサーションの理解

Oracle Web Services Manager (OWSM)は、Oracle Fusion Middlewareのインストール時に自動的に使用可能になる、一連の事前定義済ポリシーとアサーション・テンプレートを提供します。また、事前定義済のポリシーでは特定の機能が提供されてない場合は、OWSMを使用することで、カスタム・アサーションを開発することもできます。たとえば、OWSMでは使用できない認証タイプをアプリケーションで使用する必要がある場合は、カスタムの認証アサーションを作成できます。

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

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

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

OWSMは、Oracle Fusion Middlewareで読取り専用の事前定義されたポリシーを提供します。

OWSMポリシーの詳細および使用の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』を参照してください。

各ポリシーは、ドメインレベルで定義された、セキュリティ要件を定義する1つ以上のアサーションで構成されます。また、OWSMには、事前定義済のアサーション・テンプレートのセットが用意されています。これらの事前定義済アサーションと、それらの使用方法については、次を参照してください。

既存のアサーションの使用に加えて、OWSMのAPIを使用することで独自のカスタム・アサーションを開発することもできます。詳細は、Oracle Web Services Manager Java APIリファレンスを参照してください。

1.2 Webサービス・ポリシーの作成について

ポリシーとは、Webサービスの機能と要件を記述したものです。Webサービス・ポリシーは、既存のアサーション・テンプレート、カスタム・アサーションおよび既存のポリシーを使用して作成できます。zipアーカイブからポリシーをインポートすることもできます。

次に示すいずれかの方法を使用して、Webサービス・ポリシーを作成できます。

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

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

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

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

最初の3つの方法については、『Webサービスの管理』Webサービス・ポリシーの管理に関する項に説明があります。

このマニュアルでは、開発したカスタム・アサーションを使用してポリシーを作成する方法について説明します。

1.3 カスタム・アサーションの理解

カスタム・アサーションを開発することで、OWSMが提供する事前定義済のポリシーやアサーションでは使用できない特定の機能の要件を満たせるようになります。

次に示す各トピックでは、カスタム・アサーションについての理解に役立つ情報について説明します。

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

Webサービスはポリシーを使用して、機能と要件を指定します。ポリシーは、メッセージを確実に保護して提供する方法やメッセージがトランザクションをフローする必要があるかどうかを定義します。ポリシーはアサーションのセット(ルール、要件、義務)で、Webサービスの特定のポリシー要件やプロパティを表します。

ポリシー・アサーションは、ポリシーの個別の要件、機能またはプロパティを表す基本的な単位です。アサーションはドメイン固有のセマンティクスを使用して、相互運用性を有効にします。

ポリシー式はポリシーのXML表記です。ポリシー式は、wsp:Policy要素のコンテンツを形成する基本的なポリシー・アサーションの様々な論理的組合せから構成されます。論理的組合せは、ポリシー・オペレータ(wsp:Policy、wsp:Allおよびwsp:ExactlyOne要素)を使用して作成されます。

1.3.2 ポリシーの組合せについて

ポリシーには、アサーションまたはオペレータを組み合せることができます。

これについては、次の各トピックで詳しく説明します。

1.3.2.1 ポリシーとアサーションの組合せ

wsp:Policy要素で定義されたポリシーを1つのアサーション(orasp:AssertionOne)と組み合せることができます。これについて、次の例を使用して説明します。

次に、例を示します。各要素と、それらの属性のOracle拡張機能の詳細は、「カスタム・アサーションのスキーマ・リファレンス」を参照してください。

<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.3.2.2 ポリシーと2つのアサーションおよびwsp:Allオペレータの組合せ

ポリシーを2つのアサーションと組み合せることができます。次の例では、ポリシー・アサーションのリストをポリシー・オペレータのwsp:All要素でラップする例を示します(リスト内のすべてのポリシー・アサーションが、trueと評価される必要があります)。

wsp:Policy要素は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.2.3 ポリシーと多数のアサーションおよびwsp:ExactlyOneオペレータの組合せ

ポリシーを多数のアサーションおよびwsp:ExactlyOneオペレータと組み合せることができます。これについて、次の例を使用して説明します。

次の例では、オペレータ<wsp:All>...</wsp:All>内の各行が有効な代替ポリシーを表しています。代替ポリシーのいずれかのセットがtrueである場合、ポリシーを満たしています。

<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.3 サポートされるカスタム・アサーションのカテゴリ

次の表では、サポートされるカスタム・アサーションのカテゴリについて説明します。これらのカテゴリは、準拠しているWebサービスの仕様と重要度に基づいています。カテゴリの指定には、orasp:Assertion要素のorawsp:category属性を使用します。

説明については、表1-1を参照してください。「サンプル・カスタム・アサーションの管理」には、セキュリティ・カスタム・アサーションの様々なカテゴリのサンプルがあります。

表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を使用すると、様々なカテゴリのポリシーを表示、編集および管理できます。カテゴリのポリシーを特定のエンドポイントに対して添付できることに注意してください。カスタム・アサーションのバインディングのルールは、「カスタム・アサーションのバインディングのルールについて」を参照してください。

1.3.4 カスタム・アサーションのバインディングのルールについて

<orawsp:bindings>要素を使用して、アサーションのバインディングを定義します。

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

1.3.5 カスタム・アサーションのライフサイクルについて

OWSMランタイムは、カスタム・アサーションのライフサイクルを管理します。このライフサイクルは、初期化、実行、実行後、および終了の4つのフェーズで構成されています。各フェーズで、OWSMランタイムはカスタム・アサーション・エグゼキュータのメソッドを起動します。

カスタム・ポリシーのカスタム・アサーション・エグゼキュータ内で、次のメソッドを実装する必要があります。

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

  • IResult execute(IContext mcontext): このメソッドは、リクエスト、レスポンスおよびフォルトなどのステージで呼び出されます。このメソッドは、常に、null以外のIResultオブジェクトを返します。ポリシー実行のステージについては、「OWSMカスタム・セキュリティ・アサーションへのアクセス」を参照してください。

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

  • void destroy(): この破棄メソッドは、アプリケーションのシャットダウン中に、OWSMランタイムによって起動されます。アサーションのライフサイクルの終了時にクリーナとして起動されます。

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

ポリシー・オブジェクト・モデルでは、シンプル・アサーションと複数要素のシンプル・アサーションという2種類のアサーションを定義しています。

次の各トピックで、さらに詳しく説明します。

1.3.6.1 シンプル・アサーションの理解

シンプル・アサーションには、アサーション(単一の動作を定義)が1つしか含まれません。他のアサーションを含めることはできません。シンプル・アサーションは、Oracleが定義する拡張機能を除いて、ネストされた要素が含まれていないorg.w3c.dom.Elementにマップします。シンプル・アサーションのクラスは、oracle.wsm.policy.model.ISimpleAssertionクラスを拡張します。ISimpleOracleAssertionは、WS-PolicyアサーションのためにOracleが定義した拡張機能を提供します。

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

1.3.6.1.1 シンプル・アサーションを使用する際のルール

このトピックでは、シンプル・アサーションを使用する際のルールの一覧を示します。

シンプル・アサーションを使用するときには、次に示す使用上のルールに注意してください。

  • Oracle拡張機能の要素の<orawsp:bindings>以外のネストされた要素を含めることはできません。

  • 他のアサーションは含めることはできません。

  • デフォルトのシリアライザおよびデシリアライザを使用します。

  • デフォルトの実装クラスを使用します。

  • 基本的なクラスのSimpleAssertionを拡張する必要があります。メソッドgetAssertionTypeは、新しいクラスを導入したときに適切な値を返す必要があります。

  • 新しいクラスを導入したときにシリアライザとデシリアライザは不要です。

1.3.6.1.2 シンプル・アサーションの疑似スキーマの定義

このトピックでは、バインディング要素のみを含むシンプル・アサーションの疑似スキーマを示します。

この疑似スキーマを次に示します。

<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.6.2 複数要素のシンプル・アサーションの理解

複数要素のシンプル・アサーションは他のアサーションを含めることはできません。ただし、ネストされたXML要素を含むことがあります。複数要素のシンプル・アサーションは、ネストされた要素が含まれているorg.w3c.dom.ElementとOracleが定義する拡張機能要素にマップします。複数要素のシンプル・アサーションのクラスは、oracle.wsm.policy.model.IMultiElementSimpleAssertionクラスを拡張します。

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

1.3.6.2.1 複数要素のシンプル・アサーションを使用する際のルール

このトピックでは、複数要素のシンプル・アサーションを使用する際のルールの一覧を示します。

複数要素のシンプル・アサーションを使用するときには、次に示す使用上のルールに注意してください。

  • Oracle拡張機能の要素の<orawsp:bindings>以外のネストされた要素を含むことがあります。

  • 他のアサーションを含めることができず、ドメイン固有の仕様で定義されます。ドメイン固有のインターセクション・セマンティクスが定義されている場合のみ、ネストされたXML要素がインターセクションに参加します。

1.3.6.2.2 複数要素のシンプル・アサーションの疑似スキーマの定義

このトピックでは、バインディング以外の要素を含めることができる複数要素のシンプル・アサーションの疑似スキーマを示します。

この疑似スキーマを次に示します。

<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>