Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス 11gリリース1 (10.3.6) B61641-06 |
|
![]() 前 |
![]() 次 |
この章では、独自のスキーマを使用した 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サービス・セキュリティ・ポリシー・ファイルもサポートされますが、このレガシー・ポリシー・フォーマットは非推奨となったため、新しいアプリケーションには使用しないでください。
この章の内容は以下のとおりです。
MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定
注意: この項の内容は、Oracle Webサービス・セキュリティ・ポリシー・スキーマを使用して記述されたポリシーを使用するJAX-RPC Webサービスのみに適用され、JAX-WS Webサービス、およびOASIS WS-SecurityPolicy 1.2仕様に基づいて記述されたポリシーには適用されません。 |
ポリシー・ファイルを使用すると、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セキュリティ・ポリシー・ファイルのセキュリティ・アサーションの要素の階層を示します。
<?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>
以下の項では、要素について詳しく説明します。
デジタル署名するSOAPメッセージの要素を標準化するのに使用するアルゴリズムを指定します。
注意: WebLogic Webサービス・セキュリティ・ランタイムでは、ネームスペース接頭辞のリストや、正規化アルゴリズムに対してデフォルト・ネームスペースの存在を示すトークンを含む、InclusiveNamespaces PrefixListの指定をサポートしていません。 |
特定のタイプのセキュリティ・トークンに関連付けられる追加メタデータ情報を指定します。セキュリティ・トークンのタイプによって、以下の子要素を指定可能、または指定することが必要です。
ユーザー名トークンの場合、<UsePassword>
子要素を定義すると、SOAPメッセージでパスワード・ダイジェストを使用するかどうかを指定できます。詳細は、「UsePassword」を参照してください。
SAMLトークンの場合、<ConfirmationMethod>
子要素を定義して、SAML確認のタイプ(sender-vouches
またはholder-of-key)
を指定する必要があります。詳細は、「ConfirmationMethod」を参照してください。
セキュアな会話のセキュリティ・トークンの存続期間は、デフォルトでは12時間です。このデフォルト値を変更するには、<TokenLifeTime>
子要素を定義して、セキュリティ・トークンの新しい存続期間(ミリ秒)を指定します。詳細は、「TokenLifeTime」を参照してください。
この要素には、属性はありません。
SOAPメッセージの暗号化に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全部を暗号化するように指定します。
たとえば、Webサービスで、SOAPメッセージの本文全体をtriple-DESで暗号化する必要がある場合などです。
アイデンティティに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トークン・プロファイルのサポートに関する項を参照してください。
SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズムを指定します。暗号化するSOAPメッセージの一部を指定するには、<MessageParts>
兄弟要素を使用します。詳細は、「MessageParts」を参照してください。
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を指定する |
はい |
認証用にサポートされているセキュリティ・トークンのタイプ(ユーザー名、X.509、またはSAML)を指定します。
この要素には属性はありません。
SOAPメッセージのデジタル署名に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全部にデジタル署名するように指定します。
たとえば、Webサービスで、SOAPメッセージの本文全体にデジタル署名する必要があり、SHA1とRSAキーを使用したアルゴリズムのみを受け付ける場合などです。
表6-5 <Integrity>の属性
属性 | 説明 | 必須? |
---|---|---|
SignToken |
SOAPメッセージの指定部分に加え、 この属性の有効な値は、 |
いいえ |
SupportTrust10 |
. この属性の有効な値は、 |
いいえ |
X509AuthConditional |
IDアサーションで、X.509トークンをサポートされるトークン・リストに含める場合は、ポリシーにもIntegrityアサーションを含める必要があります。X.509トークンがデジタル署名で使用されていない場合、サーバーはX.509トークンを認証の証拠として受け入れません。 IDアサーションがその他のトークン・タイプを受け入れる場合、IntegrityアサーションのX509AuthConditional属性を使用して、実際の認証トークンがX.509トークンの場合のみ、デジタル署名を必要とすることを指定できます。抽象IDアサーションは、デプロイ時にあらかじめ処理されており、実行時環境によってサポートされているすべてのトークン・タイプのリストを挿入することで、具象アサーションに変換されます。 |
いいえ |
暗号化用のセキュリティ・トークンを指定するために使用します。
この要素には属性はありません。
メッセージの暗号化キーを暗号化するために使用するアルゴリズムを指定します。
セキュリティ・コンテキスト・トークンのラベルを指定します。WS-SecureConversationセキュリティ・コンテキストを構成する際に使用します。
この要素には属性はありません。
セキュリティ・コンテキスト・トークンおよび派生キー・トークンを使用する場合のキーの長さを指定します。このアサーションは、WS-SecureConversationセキュリティ・コンテキストにのみ適用されます。
デフォルト値は32です。
この要素には属性はありません。
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>
アサーションの属性について説明します。
次の表では、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サービス・セキュリティ: タイムスタンプに関する項を参照してください。
要素のSOAPメッセージにおける、署名または暗号化されるべきSOAPメッセージの部分を、その要素の祖父要素が何であるかに応じて指定します。SOAPメッセージの部分指定を行うには、このアサーション内でXPath 1.0式または一連のあらかじめ定義された関数のいずれかを使用できます。
MessageParts
アサーションは常に、Target
アサーションの子となります。Target
アサーションは、Integrity
アサーション(SOAPメッセージに対するデジタル署名の方法を指定)またはConfidentiality
アサーション(SOAPメッセージに対する暗号化の方法を指定)のいずれかの子とすることができます。
このアサーションの使い方の詳細と、様々なサンプルについては、「MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定」を参照してください。
表6-9 <MessageParts>の属性
属性 | 説明 | 必須? |
---|---|---|
Dialect |
SOAPメッセージにおける、署名または暗号化されるべき部分の認識に使用される固有言語を識別します。この属性を指定しない場合、XPath 1.0が使用されます。 この属性の値は以下のいずれかにします。
これらの言語の使用例については、「MessagePartsを使用した暗号化または署名を必要とするSOAPメッセージの部分指定」を参照してください。 |
はい |
親要素によって、認証、暗号化、またはデジタル署名のいずれかで使用できるセキュリティ・トークンを指定します。
たとえば、この要素が<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メッセージにトークンを格納するかどうかを指定します。 有効な値は、 この属性のデフォルト値は、 この属性の値は、<Identity>アサーションで使用する場合は、明示的に |
いいえ |
TokenType |
セキュリティ・トークンのタイプを指定します。有効な値は次のとおりです:
|
はい |
内部使用のみに対応しています。
このセキュリティ・アサーションは、絶対にカスタム・セキュリティ・ポリシー・ファイルに含めないようにしてください。この節での説明は、情報提供のみを目的としています。WebLogic Webサービス・ランタイムは、デプロイ済のWebサービスの動的WSDLでパブリッシュされているセキュリティ・ポリシー・ファイルに、このセキュリティ・アサーションを自動的に挿入します。このセキュリティ・アサーションは、WebLogic Serverの公開鍵を指定するものです。Webサービスを呼び出すクライアント・アプリケーションがその後、それを使用して、セキュリティ・ポリシー・ファイルで指定されたSOAPメッセージの各部分を暗号化します。Webサービス・ランタイムが次に、サーバーの秘密鍵を使用して、メッセージを復号化します。
デジタル署名の計算に使用する暗号アルゴリズムを指定します。
親要素によって、認証、暗号化、またはデジタル署名のいずれかで使用できるセキュリティ・トークンのリストを指定します。
この要素には属性はありません。
親要素によって、暗号化またはデジタル署名するSOAPメッセージのターゲットに関する情報をカプセル化します。
子要素も、親要素によって異なります。たとえば、<Integrity>
で使用する場合は、<DigestAlgorithm>
、<Transform>
、および<MessageParts>
子要素を指定できます。<Confidentiality>
で使用する場合は、<EncryptionAlgorithm>
、<Transform>
、および<MessageParts>
子要素を指定できます。
1つまたは複数のターゲットを指定できます。
セキュリティ・コンテキスト・トークンまたは派生キー・トークンの存続期間(秒)を指定します。この要素は、WS-SecurityConversationセキュリティ・コンテキストを構成する場合にのみ使用します。
セキュリティ・トークンのデフォルトの存続期間は12時間(43,200秒)です。
この要素には属性はありません。
親要素によって、電子署名または暗号化されるSOAPメッセージの一部に適用されるトランスフォーメーション・アルゴリズムのURIを指定します。
0個以上の任意の数のトランスフォーメーションを指定できます。指定したトランスフォーメーションは、<Target>
親要素で指定されている順序で実行されます。
表6-13 <Transform>の属性
属性 | 説明 | 必須? |
---|---|---|
URI |
トランスフォーメーション・アルゴリズムのURIを指定します。 有効なURIは次のとおりです。
これらの変換アルゴリズムの詳細は、 |
はい |
プレーン・テキストかパスワードのダイジェストかをSOAPメッセージに表示するように指定します。この要素は、ユーザー名トークンでのみ使用されます。
表6-14 <UsePassword>の属性
属性 | 説明 | 必須? |
---|---|---|
Type |
パスワードのタイプを指定します。有効な値は次のとおりです:
注意: 後方互換性を保つため、前述の2つのURIは、先頭に「www.」を付けて指定することもできます。例:
|
はい |
セキュリティ・ポリシー・ファイルでIntegrity
またはConfidentiality
アサーションのいずれかを使用する場合、Target
子アサーションも使用して、デジタル署名または暗号化を行うSOAPメッセージのターゲットを指定することが求められます。Target
アサーションでは、MessageParts
子アサーションを使用して、SOAPメッセージにおいて実際にデジタル署名または暗号化されるべき部分を指定することが必要です。この項では、MessageParts
アサーションの様々な使い方を説明します。
Confidentialityアサーション内でMessageParts
アサーションを使用する詳細なセキュリティ・ポリシー・ファイルの例については、「セキュリティ要素のあるポリシー・ファイルの例」
を参照してください。この例では、SOAPメッセージの本文全体と、Assertion
セキュリティ・ヘッダーが、ともに暗号化されるように指定する方法を示します。
MessageParts
のDialect
属性を使用し、SOAPメッセージの各部分の識別に使用される固有言語を指定します。WebLogic Webサービス・セキュリティ・ランタイムでは、次の3つの固有言語をサポートしています。
必ず、メッセージ保護されたWebサービスのクライアント呼出しの結果として生じたSOAPメッセージ内に実際に存在するメッセージの一部を指定するようにしてください。セキュリティ・ポリシー・ファイルが署名または暗号化される部分として示している部分を含まないインバウンドSOAPメッセージに遭遇した場合、Webサービス・セキュリティ・ランタイムはエラーを戻し、呼出しは失敗します。唯一の例外としては、WebLogic固有のwls:SystemHeader()
関数を使用してSOAPメッセージ中の任意のWebLogic固有のSOAPヘッダーに対し署名または暗号化を行うと指定した場合に、SOAPメッセージ内にこれらのヘッダーがまったく見つからなければ、Webサービス・セキュリティ・ランタイムはただ呼出しを続行し、エラーを戻すことはしません。
この固有言語では、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
部分に対して署名を行うか暗号化を行うかを、親Target
がIntegrity
アサーションの子であるか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」を参照してください。 |
「XPath 1.0」で説明したXPath固有言語は、SOAPメッセージにおける暗号化または署名されるべき任意の部分を正確に特定するのに十分な柔軟性を備えています。しかし場合によっては、単にSOAPメッセージ本文全体に対する署名または暗号化の指定が必要なこともあります。この場合、XPath式を使用すると、過度に複雑になってしまうので、次の例に示すように、この目的のためだけにあらかじめ定義されているwsp:Body()
関数を使用することをお薦めします。
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part"> wsp:Body() </wssp:MessageParts>
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()
関数に対しては、前述のヘッダーのリストのうち任意のものを指定できます。