ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス
11g リリース1 (10.3.6)
B61641-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

6 Oracle Webサービス・セキュリティ・ポリシー・アサーションのリファレンス

この章では、独自のスキーマを使用した WebLogic Webサービス・セキュリティ・ポリシー・ファイルで構成可能なセキュリティ・アサーションに関するリファレンス情報を示します。

OASIS WS-SecurityPolicy仕様が規定される前にリリースされた旧リリースのWebLogic Serverでは、WS-Policy仕様に基づき、独自のWebサービス・セキュリティ・ポリシー・スキーマを使用して記述されたセキュリティ・ポリシー・ファイルを使用していました。WebLogic Serverの今回のリリースでは、OASIS WS-SecurityPolicy 1.2仕様(http://www.oasis-open.org/committees/download.php/21401/ws-securitypolicy-1.2-spec-cd-01.pdf)に準拠するセキュリティ・ポリシー・ファイルがサポートされます。WebLogic Server 9で初めて組み込まれた独自のWebサービス・セキュリティ・ポリシー・ファイルもサポートされますが、このレガシー・ポリシー・フォーマットは非推奨となったため、新しいアプリケーションには使用しないでください。

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

セキュリティ・アサーションを含むポリシー・ファイルの概要

ポリシー・ファイルを使用すると、WebLogic Webサービスのメッセージ・レベルのセキュリティを構成できます。WebLogic Webサービスに関連付けられているセキュリティ・ポリシー・ファイルの名前を指定するには、そのWebサービスを実装しているJWSファイルで@Policyおよび@Policies JWSアノテーションを使用します。

セキュリティ・ポリシー・ファイルは、WS-Policy仕様(http://www.w3.org/Submission/WS-Policy)に準拠したXMLファイルです。WS-Policyファイルのルート要素は、常に<wsp:Policy>です。メッセージ・レベルのセキュリティを構成するには、認証用にサポートされているトークンのタイプ、およびSOAPメッセージを暗号化してデジタル署名する方法を指定するポリシー・アサーションを追加します。


注意:

これらのセキュリティ・ポリシー・アサーションは、2002年12月18日に公開されたWeb Services Security Policy Language (WS-SecurityPolicy)仕様に基づいています。つまり、WebLogic Serverのアサーションの正確な構文と使用方法は、この仕様で説明されているアサーションとは異なっていますが、意味上の違いはありません。このアサーションは、最新の仕様(2005年7月13日付)には基づいていません


Oracle Webサービス・セキュリティ・ポリシー・スキーマを使用するポリシー・ファイルには、次のネームスペースが含まれます。

<wsp:Policy
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wssp="http://www.bea.com/wls90/security/policy"
  >

このリリースのWebLogic Serverには、OASIS WS-SecurityPolicy 1.2仕様に準拠しているパッケージ化されたポリシー・ファイルも数多く用意されています。WS-SecurityPolicy 1.2ポリシー・ファイルとOracle独自のWebサービス・セキュリティ・ポリシー・スキーマ・ファイルには、相互の互換性はありません。したがって、1つのWebサービス・セキュリティ構成で両方のタイプのポリシー・ファイルを使用できません。WS-SecurityPolicy 1.2セキュリティ・ポリシー・ファイルの使用については、『Oracle WebLogic Server WebLogic Webサービスの保護』のWS-SecurityPolicy 1.2ポリシー・ファイルの使用に関する項を参照してください。

メッセージ・レベルでセキュリティ保護されたWebLogic Webサービスの作成に関するタスク中心の説明は、『Oracle WebLogic Server WebLogic Webサービスの保護』のメッセージ・レベルのセキュリティの構成に関する項を参照してください。

グラフィカルな表現

以下の図では、 Oracleセキュリティ・ポリシー・ファイルのセキュリティ・アサーションの要素の階層を示します。

図6-1 セキュリティOracleセキュリティ・ポリシー・アサーションの要素階層

図6-1の説明が続きます
「図6-1 Oracleセキュリティ・ポリシー・アサーションの要素階層」の説明

セキュリティ要素のあるポリシー・ファイルの例

<?xml version="1.0"?>
<wsp:Policy
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wssp="http://www.bea.com/wls90/security/policy"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
  xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
  >
  <wssp:Identity>
    <wssp:SupportedTokens>
      <wssp:SecurityToken TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID">
        <wssp:Claims>
          <wssp:ConfirmationMethod>sender-vouches</wssp:ConfirmationMethod>
        </wssp:Claims>
      </wssp:SecurityToken>
    </wssp:SupportedTokens>
  </wssp:Identity>
  <wssp:Confidentiality>
    <wssp:KeyWrappingAlgorithm 
           URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
    <wssp:Target>
      <wssp:EncryptionAlgorithm
           URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
      <wssp:MessageParts
           Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
           wls:SecurityHeader(Assertion)
      </wssp:MessageParts>
    </wssp:Target>
    <wssp:Target>
      <wssp:EncryptionAlgorithm
           URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
      <wssp:MessageParts 
           Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
           wsp:Body()</wssp:MessageParts>
    </wssp:Target>
    <wssp:KeyInfo />
  </wssp:Confidentiality>
</wsp:Policy>

要素の説明

以下の項では、要素について詳しく説明します。

CanonicalizationAlgorithm

デジタル署名するSOAPメッセージの要素を標準化するのに使用するアルゴリズムを指定します。


注意:

WebLogic Webサービス・セキュリティ・ランタイムでは、ネームスペース接頭辞のリストや、正規化アルゴリズムに対してデフォルト・ネームスペースの存在を示すトークンを含む、InclusiveNamespaces PrefixListの指定をサポートしていません。


表6-1 <CanonicalizationAlgorithm>の属性

属性 説明 必須?

URI

デジタル署名するSOAPメッセージの標準化に使用するアルゴリズム。

指定できるのは以下の標準化アルゴリズムのみです。

http://www.w3.org/2001/10/xml-exc-cl4n#

はい


Claims

特定のタイプのセキュリティ・トークンに関連付けられる追加メタデータ情報を指定します。セキュリティ・トークンのタイプによって、以下の子要素を指定可能、または指定することが必要です。

  • ユーザー名トークンの場合、<UsePassword>子要素を定義すると、SOAPメッセージでパスワード・ダイジェストを使用するかどうかを指定できます。詳細は、「UsePassword」を参照してください。

  • SAMLトークンの場合、<ConfirmationMethod>子要素を定義して、SAML確認のタイプ(sender-vouchesまたはholder-of-key)を指定する必要があります。詳細は、「ConfirmationMethod」を参照してください。

セキュアな会話のセキュリティ・トークンの存続期間は、デフォルトでは12時間です。このデフォルト値を変更するには、<TokenLifeTime>子要素を定義して、セキュリティ・トークンの新しい存続期間(ミリ秒)を指定します。詳細は、「TokenLifeTime」を参照してください。

この要素には、属性はありません。

Confidentiality

SOAPメッセージの暗号化に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全部を暗号化するように指定します。

たとえば、Webサービスで、SOAPメッセージの本文全体をtriple-DESで暗号化する必要がある場合などです。

表6-2 <Confidentiality>の属性

属性 説明 必須?

SupportTrust10

.

この属性の有効な値は、trueおよびfalseです。デフォルト値はfalseです。

いいえ


ConfirmationMethod

アイデンティティにSAMLトークンを使用する場合に使う確認メソッドのタイプを指定します。この要素に対しては、sender-vouchesまたはholder-of-keyという2つの値のうちのいずれかを指定する必要があります。例:

  <wssp:Claims>
          <wssp:ConfirmationMethod>sender-vouches</wssp:ConfirmationMethod>
  </wssp:Claims>

この要素には、属性はありません。

<ConfirmationMethod>要素は、SAMLトークンを使用している場合のみ必須です。

セキュリティ・ポリシー・ファイル内の<ConfirmationMethod>アサーションの正確な場所は、構成している構成メソッドのタイプによって違います。具体的には:

sender-vouches:

<Identity>アサーション内の<ConfirmationMethod>アサーションを、次の例に示すように指定します。

<?xml version="1.0"?>
<wsp:Policy
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wssp="http://www.bea.com/wls90/security/policy"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
  xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
  >
  <wssp:Identity>
    <wssp:SupportedTokens>
      <wssp:SecurityToken 
        TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID">
        <wssp:Claims>
          <wssp:ConfirmationMethod>sender-vouches</wssp:ConfirmationMethod>
        </wssp:Claims>
      </wssp:SecurityToken>
    </wssp:SupportedTokens>
  </wssp:Identity>
</wsp:Policy>

holder-of-key:

<Integrity>アサーション内の<ConfirmationMethod>アサーションを指定します。この確認メソッドのための<Integrity>アサーションにSAMLトークンを含めるのは、Webサービス・ランタイムで、sender-vouchesでは必要でないメッセージの整合性の証明が必要なためです。

例:

<?xml version="1.0"?>
<wsp:Policy
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wssp="http://www.bea.com/wls90/security/policy"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
  xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part">
  <wssp:Integrity>
    <wssp:SignatureAlgorithm
       URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <wssp:CanonicalizationAlgorithm
       URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <wssp:Target>
      <wssp:DigestAlgorithm 
         URI="http://www.w3.org/2000/09/xmldsig#sha1" />
      <wssp:MessageParts 
         Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
         wsp:Body()
      </wssp:MessageParts>
    </wssp:Target>
    <wssp:SupportedTokens>
      <wssp:SecurityToken 
          IncludeInMessage="true" 
          TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID">
        <wssp:Claims>
          <wssp:ConfirmationMethod>holder-of-key</wssp:ConfirmationMethod>
        </wssp:Claims>
      </wssp:SecurityToken>
    </wssp:SupportedTokens>
  </wssp:Integrity>
</wsp:Policy>

2つのSAML確認メソッド(sender-vouchesまたはholder-of-key)の詳細は、『Oracle WebLogic Serverセキュリティの理解』のWebLogic WebサービスでのSAMLトークン・プロファイルのサポートに関する項を参照してください。

DigestAlgorithm

SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズムを指定します。暗号化するSOAPメッセージの一部を指定するには、<MessageParts>兄弟要素を使用します。詳細は、「MessageParts」を参照してください。

表6-3 <DigestAlgorithm>の属性

属性 説明 必須?

URI

SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズム。

指定できるのは以下のダイジェスト・アルゴリズムのみです。

http://www.w3.org/2000/09/xmldsig#sha1

はい


EncryptionAlgorithm

SOAPメッセージの指定部分を暗号化する際に使用する暗号化アルゴリズムを指定します。暗号化するSOAPメッセージの一部を指定するには、<MessageParts>兄弟要素を使用します。詳細は、「MessageParts」を参照してください。

表6-4 <EncryptionAlgorithm>の属性

属性 説明 必須?

URI

SOAPメッセージの指定部分を暗号化する際に使用する暗号化アルゴリズム。

有効な値は次のとおりです:

http://www.w3.org/2001/04/xmlenc#tripledes-cbc
http://www.w3.org/2001/04/xmlenc#kw-tripledes
http://www.w3.org/2001/04/xmlenc#aes128-cbc

WebLogic Workshop 8.1でビルドしたWebサービス間で相互運用する場合は、暗号化アルゴリズムとしてhttp://www.w3.org/2001/04/xmlenc#aes128-cbcを指定する必要があります

はい


Identity

認証用にサポートされているセキュリティ・トークンのタイプ(ユーザー名、X.509、またはSAML)を指定します。

この要素には属性はありません。

整合性

SOAPメッセージのデジタル署名に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全部にデジタル署名するように指定します。

たとえば、Webサービスで、SOAPメッセージの本文全体にデジタル署名する必要があり、SHA1とRSAキーを使用したアルゴリズムのみを受け付ける場合などです。

表6-5 <Integrity>の属性

属性 説明 必須?

SignToken

SOAPメッセージの指定部分に加え、<Integrity><SecurityToken>子要素で指定したセキュリティ・トークンにもデジタル署名するかどうかを指定します。

この属性の有効な値は、trueおよびfalseです。デフォルト値はtrueです。

いいえ

SupportTrust10

.

この属性の有効な値は、trueおよびfalseです。デフォルト値はfalseです。

いいえ

X509AuthConditional

IDアサーションで、X.509トークンをサポートされるトークン・リストに含める場合は、ポリシーにもIntegrityアサーションを含める必要があります。X.509トークンがデジタル署名で使用されていない場合、サーバーはX.509トークンを認証の証拠として受け入れません。

IDアサーションがその他のトークン・タイプを受け入れる場合、IntegrityアサーションのX509AuthConditional属性を使用して、実際の認証トークンがX.509トークンの場合のみ、デジタル署名を必要とすることを指定できます。抽象IDアサーションは、デプロイ時にあらかじめ処理されており、実行時環境によってサポートされているすべてのトークン・タイプのリストを挿入することで、具象アサーションに変換されます。

いいえ


KeyInfo

暗号化用のセキュリティ・トークンを指定するために使用します。

この要素には属性はありません。

KeyWrappingAlgorithm

メッセージの暗号化キーを暗号化するために使用するアルゴリズムを指定します。

表6-6 <KeyWrappingAlgorithm>の属性

属性 説明 必須?

URI

SOAPメッセージの暗号化キーを暗号化するために使用するアルゴリズム。

有効な値は次のとおりです:

  • http://www.w3.org/2001/04/xmlenc#rsa-1_5

    (RSA-v1.5アルゴリズムを指定する場合)

  • http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

    (RSA-OAEPアルゴリズムを指定する場合)

はい


Label

セキュリティ・コンテキスト・トークンのラベルを指定します。WS-SecureConversationセキュリティ・コンテキストを構成する際に使用します。

この要素には属性はありません。

Length

セキュリティ・コンテキスト・トークンおよび派生キー・トークンを使用する場合のキーの長さを指定します。このアサーションは、WS-SecureConversationセキュリティ・コンテキストにのみ適用されます。

デフォルト値は32です。

この要素には属性はありません。

MessageAge

SOAPメッセージが有効期限切れになり、破棄されるまでの期間を指定します。

このセキュリティ・アサーションをセキュリティ・ポリシー・ファイルに含めると、Webサービス・ランタイムは、セキュリティ・ポリシー・ファイルが関連付けられている方向(インバウンド、アウトバウンド、またはその両方)に応じて、リクエストまたはレスポンスのSOAPメッセージに<Timestamp>ヘッダーを追加します。<Timestamp>ヘッダーは、メッセージの有効期限を、SOAPメッセージの宛先に対して示すものです。

たとえば、セキュリティ・ポリシー・ファイルに、次のような<MessageAge>アサーションが含まれていると仮定します。

<wsp:Policy
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
  xmlns:wssp="http://www.bea.com/wls90/security/policy"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
  >
...
   <wssp:MessageAge Age="300" />
</wsp:Policy>

The resulting generated SOAP message will have a <Timestamp> header similar to the following excerpt:
<wsu:Timestamp
     wsu:Id="Dy2PFsX3ZQacqNKEANpXbNMnMhm2BmGOA2WDc2E0JpiaaTmbYNwT" 
     xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <wsu:Created>2005-11-09T17:46:55Z</wsu:Created>
   <wsu:Expires>2005-11-09T17:51:55Z</wsu:Expires>
</wsu:Timestamp>

この例において、SOAPメッセージの宛先では、2005-11-09T17:51:55Z、つまりメッセージ作成から5分後以降に受信されたメッセージが破棄されます。

Webサービス・ランタイムは、SOAPメッセージ生成時に、<Created>ヘッダーをSOAPメッセージが作成された時刻に設定し、<Expires>ヘッダーを、<MessageAge>アサーションのAge属性の値を作成時刻に加算したものに設定します。

次の表では、<MessageAge>アサーションの属性について説明します。

表6-7 <MessageAge>の属性

属性 説明 必須?

Age

SOAPメッセージの実際にタイムアウトになるまでの期間(秒)を指定します。

いいえ


次の表では、WebLogic Webサービス・セキュリティ・ランタイムのタイムスタンプ動作を記述するプロパティを、そのデフォルト値とともにリストしています。

表6-8 タイムスタンプ動作プロパティ

プロパティ 説明 デフォルト値

クロックを同期

Webサービスで同期化されたクロックを前提とするかどうかを指定します。

true

クロック精度

クロックが同期化されている場合に、同期の精度を表します。

注意: このプロパティは、リリース9.2のWebLogic Webサービスでは非推奨です。かわりに、「クロック・スキュー」プロパティを使用します。両方のプロパティが設定されている場合は、「クロック・スキュー」プロパティが優先されます。

60000ミリ秒

クロックのずれ

メッセージの送信側と受信側の間で許容する差異(ミリ秒)を指定します。

60000ミリ秒

厳密でない精度

クロック精度プロパティの適用方法を緩和できます。

注意: このプロパティは、リリース9.2のWebLogic Webサービスでは非推奨です。かわりに、「クロック・スキュー」プロパティを使用します。

false

最大処理遅延

受信メッセージの鮮度のポリシーを指定します。

-1

有効期間

送信元がアウトバウンド・メッセージが有効であることを要求する時間の長さを表します。

60秒


通常、前述のタイムスタンプ・プロパティに変更を加える必要が生じることはありません。しかし、実際に必要になった場合は、default_wss Webサービス・セキュリティ構成がまだ存在していなければ、管理コンソールを使用してそれを作成し、その後「タイムスタンプ」タブをクリックして、タイムスタンプ構成を更新する必要があります。タスクの詳細はWebサービス・セキュリティ構成の作成に関する項を、これらのタイムスタンプ・プロパティの詳細なリファレンス情報については、Oracle WebLogic Server管理コンソール・ヘルプドメイン: Webサービス・セキュリティ: タイムスタンプに関する項を参照してください。

MessageParts

要素のSOAPメッセージにおける、署名または暗号化されるべきSOAPメッセージの部分を、その要素の祖父要素が何であるかに応じて指定します。SOAPメッセージの部分指定を行うには、このアサーション内でXPath 1.0式または一連のあらかじめ定義された関数のいずれかを使用できます。

MessagePartsアサーションは常に、Targetアサーションの子となります。Targetアサーションは、Integrityアサーション(SOAPメッセージに対するデジタル署名の方法を指定)またはConfidentialityアサーション(SOAPメッセージに対する暗号化の方法を指定)のいずれかの子とすることができます。

このアサーションの使い方の詳細と、様々なサンプルについては、「MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定」を参照してください。

表6-9 <MessageParts>の属性

属性 説明 必須?

Dialect

SOAPメッセージにおける、署名または暗号化されるべき部分の認識に使用される固有言語を識別します。この属性を指定しない場合、XPath 1.0が使用されます。

この属性の値は以下のいずれかにします。

  • http://www.w3.org/TR/1999/REC-xpath-19991116: 署名または暗号化されるべき部分を指定するために、SOAPメッセージに対してXPath 1.0式を使用することを指定します。

  • http://schemas.xmlsoap.org/2002/12/wsse#part: SOAP本文全体に署名または暗号化を行うことを指定するために使用される、便利な固有言語。

  • http://www.bea.com/wls90/security/policy/wsee#part: WebLogic固有のヘッダーに署名または暗号化を行うことを指定するための、便利な固有言語。また、この言語を使用すると、QNamesを使って、セキュリティ・ヘッダーにおける署名または暗号化されるべき部分を指定できます。

これらの言語の使用例については、「MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定」を参照してください。

はい


SecurityToken

親要素によって、認証、暗号化、またはデジタル署名のいずれかで使用できるセキュリティ・トークンを指定します。

たとえば、この要素が<Identity>親要素で定義されている場合、Webサービスを呼び出したクライアント・アプリケーションは、SOAPリクエストにセキュリティ・トークンをアタッチする必要があります。Webサービスによっては、機密データにアクセスできるようにするために、クライアント・アプリケーションが、信頼性のある認証局によって発行されたSAML認証トークンを提示することを求められる場合もあります。この要素が<Confidentiality>の一部の場合、暗号用のトークンが指定されます。

特定のタイプのセキュリティ・トークンは、親要素に加え、TokenType属性の値によって決まります。

セキュアな会話のセキュリティ・トークンの存続期間は、デフォルトでは12時間です。このデフォルト値を変更するには、「Claims」の説明に従って、<TokenLifeTime>子要素を含む<Claims>子要素を追加します。

表6-10 <SecurityToken>の属性

属性 説明 必須?

DerivedFromTokenType

派生元のセキュリティ・トークンを指定します。たとえば、「http://schemas.xmlsoap.org/ws/2005/02/sc/sct」の値は、セキュアな会話トークンの古いバージョンから派生することを示します。

いいえ

IncludeInMessage

SOAPメッセージにトークンを格納するかどうかを指定します。

有効な値は、trueまたはfalseです。

この属性のデフォルト値は、<Confidentiality>アサーションで使用する場合はfalse<Integrity>アサーションで使用する場合はtrueです。

この属性の値は、<Identity>アサーションで使用する場合は、明示的にfalseに設定したとしても、常にtrueです。

いいえ

TokenType

セキュリティ・トークンのタイプを指定します。有効な値は次のとおりです:

  • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3 (バイナリX.509トークンの指定用)

  • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken (ユーザー名トークンの指定用)

  • http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID (SAMLトークンの指定用)

はい


SecurityTokenReference

内部使用のみに対応しています。

このセキュリティ・アサーションは、絶対にカスタム・セキュリティ・ポリシー・ファイルに含めないようにしてください。この節での説明は、情報提供のみを目的としています。WebLogic Webサービス・ランタイムは、デプロイ済のWebサービスの動的WSDLでパブリッシュされているセキュリティ・ポリシー・ファイルに、このセキュリティ・アサーションを自動的に挿入します。このセキュリティ・アサーションは、WebLogic Serverの公開鍵を指定するものです。Webサービスを呼び出すクライアント・アプリケーションがその後、それを使用して、セキュリティ・ポリシー・ファイルで指定されたSOAPメッセージの各部分を暗号化します。Webサービス・ランタイムが次に、サーバーの秘密鍵を使用して、メッセージを復号化します。

SignatureAlgorithm

デジタル署名の計算に使用する暗号アルゴリズムを指定します。

表6-11 <SignatureAlgorithm>の属性

属性 説明 必須?

URI

署名の計算に使用する暗号アルゴリズムを指定します。

注意: 社内で使用している証明書と互換性のあるアルゴリズムを必ず指定してください。

有効な値は次のとおりです:

http://www.w3.org/2000/09/xmldsig#rsa-sha1
http://www.w3.org/2000/09/xmldsig#dsa-sha1

はい


SupportedTokens

親要素によって、認証、暗号化、またはデジタル署名のいずれかで使用できるセキュリティ・トークンのリストを指定します。

この要素には属性はありません。

Target

親要素によって、暗号化またはデジタル署名するSOAPメッセージのターゲットに関する情報をカプセル化します。

子要素も、親要素によって異なります。たとえば、<Integrity>で使用する場合は、<DigestAlgorithm><Transform>、および<MessageParts>子要素を指定できます。<Confidentiality>で使用する場合は、<EncryptionAlgorithm><Transform>、および<MessageParts>子要素を指定できます。

1つまたは複数のターゲットを指定できます。

表6-12 <Target>の属性

属性 説明 必須?

encryptContentOnly

要素全体を暗号化するか、その内容のみを暗号化するかを指定します。

この属性は、<Target><Confidentiality>の子要素である場合にのみ指定できます。

この属性のデフォルト値はtrueで、内容のみが暗号化されます。

いいえ


TokenLifeTime

セキュリティ・コンテキスト・トークンまたは派生キー・トークンの存続期間(秒)を指定します。この要素は、WS-SecurityConversationセキュリティ・コンテキストを構成する場合にのみ使用します。

セキュリティ・トークンのデフォルトの存続期間は12時間(43,200秒)です。

この要素には属性はありません。

Transform

親要素によって、電子署名または暗号化されるSOAPメッセージの一部に適用されるトランスフォーメーション・アルゴリズムのURIを指定します。

0個以上の任意の数のトランスフォーメーションを指定できます。指定したトランスフォーメーションは、<Target>親要素で指定されている順序で実行されます。

表6-13 <Transform>の属性

属性 説明 必須?

URI

トランスフォーメーション・アルゴリズムのURIを指定します。

有効なURIは次のとおりです。

  • http://www.w3.org/2000/09/xmldsig#base64 (Base64デコード変換)

  • http://www.w3.org/TR/1999/REC-xpath-19991116 (XPathフィルタ処理)

これらの変換アルゴリズムの詳細は、http://www.w3.org/TR/xmldsig-core/#sec-TransformAlgにある「XML-Signature Syntax and Processing」を参照してください。

はい


UsePassword

プレーン・テキストかパスワードのダイジェストかをSOAPメッセージに表示するように指定します。この要素は、ユーザー名トークンでのみ使用されます。

表6-14 <UsePassword>の属性

属性 説明 必須?

Type

パスワードのタイプを指定します。有効な値は次のとおりです:

  • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText: SOAPメッセージでクリア・テキスト・パスワードを使用するように指定します。

  • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest: SOAPメッセージでパスワード・ダイジェストを使用するように指定します。

注意: 後方互換性を保つため、前述の2つのURIは、先頭に「www.」を付けて指定することもできます。例:

  • http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText

  • http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest

はい


MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定

セキュリティ・ポリシー・ファイルでIntegrityまたはConfidentialityアサーションのいずれかを使用する場合、Target子アサーションも使用して、デジタル署名または暗号化を行うSOAPメッセージのターゲットを指定することが求められます。Targetアサーションでは、MessageParts子アサーションを使用して、SOAPメッセージにおいて実際にデジタル署名または暗号化されるべき部分を指定することが必要です。この項では、MessagePartsアサーションの様々な使い方を説明します。

Confidentialityアサーション内でMessagePartsアサーションを使用する詳細なセキュリティ・ポリシー・ファイルの例については、「セキュリティ要素のあるポリシー・ファイルの例」を参照してください。この例では、SOAPメッセージの本文全体と、Assertionセキュリティ・ヘッダーが、ともに暗号化されるように指定する方法を示します。

MessagePartsDialect属性を使用し、SOAPメッセージの各部分の識別に使用される固有言語を指定します。WebLogic Webサービス・セキュリティ・ランタイムでは、次の3つの固有言語をサポートしています。

必ず、メッセージ保護されたWebサービスのクライアント呼出しの結果として生じたSOAPメッセージ内に実際に存在するメッセージの一部を指定するようにしてください。セキュリティ・ポリシー・ファイルが署名または暗号化される部分として示している部分を含まないインバウンドSOAPメッセージに遭遇した場合、Webサービス・セキュリティ・ランタイムはエラーを戻し、呼出しは失敗します。唯一の例外としては、WebLogic固有のwls:SystemHeader()関数を使用してSOAPメッセージ中の任意のWebLogic固有のSOAPヘッダーに対し署名または暗号化を行うと指定した場合に、SOAPメッセージ内にこれらのヘッダーがまったく見つからなければ、Webサービス・セキュリティ・ランタイムはただ呼出しを続行し、エラーを戻すことはしません。

XPath 1.0

この固有言語では、XPath 1.0式を使用して、SOAPメッセージにおける署名または暗号化されるべき部分を指定できます。この固有言語を有効化するDialect属性の値は、http://www.w3.org/TR/1999/REC-xpath-19991116です。

通常、SOAPメッセージにおける暗号化またはデジタル署名されるべき部分は、soap:Body要素、soap:Header要素のいずれかの子要素であると指定する必要があります。このため、パラメータとしてXPath式を取る以下の2つの関数が用意されています。

  • wsp:GetBody(xpath_expression) - XPath式が検索を開始するルート要素をsoap:Bodyと指定します。

  • wsp:GetHeader(xpath_expression) - XPath式が検索を開始するルート要素をsoap:Headerと指定します。

また、前述の関数の1つを使わず、MessagePartsアサーションのコンテンツとして簡素なXPath式を使用することもできます。この場合、XPath式が検索を開始するルート要素はsoap:Envelopeとなります。

次の例では、ネームスペース接頭辞n1を持ち、SOAPメッセージ本文の中に入っているAddInt部分に対して署名を行うか暗号化を行うかを、親TargetIntegrityアサーションの子であるかConfidentialityアサーションの子であるかに応じて指定しています。

<wssp:MessageParts 
     Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"
     xmlns:n1="http://www.bea.com/foo">
        wsp:GetBody(./n1:AddInt)
</wssp:MessageParts>

上の例では、XPath式で指定された部分のネームスペース(この例ではn1)が、セキュリティ・ポリシー・ファイルの別の場所で定義済でなければ、MessagePartsアサーションに対する属性としてそれを定義する必要があることを示しています。

以下の例は、前述のものに似ています。ただし、署名または暗号化される部分は、wsee:Securityの子要素であり、SOAPメッセージ・ヘッダー内に入っている、wsu:Timestampです。

<wssp:MessageParts 
     Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
        wsp:GetHeader(./wsse:Security/wsu:Timestamp)
</wssp:MessageParts>

前述の例では、wsee:およびwse:ネームスペースが、セキュリティ・ポリシー・ファイルの別の場所で定義済であることが前提となっています。


注意:

XPath式の作成方法については、このドキュメントでは対応していません。詳細は、http://www.w3.org/TR/xpath仕様にある「XML Path Language (XPath), Version 1.0」を参照してください。


定義済のwsp:Body()関数

「XPath 1.0」で説明したXPath固有言語は、SOAPメッセージにおける暗号化または署名されるべき任意の部分を正確に特定するのに十分な柔軟性を備えています。しかし場合によっては、単にSOAPメッセージ本文全体に対する署名または暗号化の指定が必要なこともあります。この場合、XPath式を使用すると、過度に複雑になってしまうので、次の例に示すように、この目的のためだけにあらかじめ定義されているwsp:Body()関数を使用することをお薦めします。

<wssp:MessageParts
     Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
       wsp:Body()
</wssp:MessageParts>

WebLogic固有のHeader関数

Oracleでは、WebLogicセキュリティまたはシステムのヘッダーの一部または全部に対する署名または暗号化を簡単に指定するための、一連の関数をあらかじめ定義した、独自の固有言語を提供しています。XPath固有言語でも同じ目的を果たすことができますが、このWebLogic固有言語を使用する方が、ずっと簡単です。この固有言語は、Dialect属性をhttp://www.bea.com/wls90/security/policy/wsee#partに設定することによって、有効化されます。

wls:SystemHeaders()関数は、すべてのWebLogic固有ヘッダーに対する署名または暗号化を指定します。これらのヘッダーは、信頼性のあるメッセージングやアドレッシングなど、様々な機能に関して、WebLogic Webサービス・ランタイムで内部的に使用されます。ヘッダーは次のとおりです。

  • wsrm:SequenceAcknowledgement

  • wsrm:AckRequested

  • wsrm:Sequence

  • wsa:Action

  • wsa:FaultTo

  • wsa:From

  • wsa:MessageID

  • wsa:RelatesTo

  • wsa:ReplyTo

  • wsa:To

  • wsax:SetCookie

以下の例では、wls:SystemHeader()関数の使い方を示します。

<wssp:MessageParts
     Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
        wls:SystemHeaders()
</wssp:MessageParts>

セキュリティ・ヘッダーにおける署名または暗号化されるべき特定の部分を指定するには、以下の例に示すように、wls:SecurityHeader(header)関数を使用します。

<wssp:MessageParts
    Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
        wls:SecurityHeader(wsa:From)
</wssp:MessageParts>

この例では、wsa:Fromセキュリティ・ヘッダーのみが署名または暗号化されます。wls:SecurityHeader()関数に対しては、前述のヘッダーのリストのうち任意のものを指定できます。