Oracle® Fusion Middleware Oracle WebLogic Server Web サービス リファレンス 11g リリース 1 (10.3.1) B55558-01 |
|
![]() 戻る |
![]() 次へ |
OASIS WS-SecurityPolicy 仕様が規定される前にリリースされた旧バージョンの WebLogic Server では、WS-Policy 仕様に基づき、独自の Web サービス セキュリティ ポリシー スキーマを使用して記述されたセキュリティ ポリシー ファイルを使用していました。WebLogic Serverの今回のリリースでは、http://www.oasis-open.org/committees/download.php/21401/ws-securitypolicy-1.2-spec-cd-01.pdf
にある OASIS WS-SecurityPolicy 1.2 仕様に準拠するセキュリティ ポリシーファイルがサポートされます。WebLogic Serverの今回のリリースでは、WebLogic Server 9 に最初に含めた独自の Web サービス セキュリティ ポリシー ファイルもサポートされます。ただし、このレガシー ポリシー フォーマットは推奨されていません。新しいアプリケーションに使用しないでください。
以下の節では、独自のスキーマを使用した 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 アノテーションを使用します。
セキュリティ ポリシーのファイルは、http://www-106.ibm.com/developerworks/library/specification/ws-polfram/
にある 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 Fusion Middleware Oracle WebLogic Server WebLogic Web サービスのセキュリティ』の「WS-SecurityPolicy 1.2 ポリシー ファイルの使用」を参照してください。
メッセージレベルでセキュリティ保護された WebLogic Web サービスをタスク中心に説明している内容については、『Oracle Fusion Middleware 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 で暗号化する必要がある場合などです。
ID に 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 Fusion Middleware WebLogic Security の紹介』の「WebLogic Web サービスでの SAML トークン プロファイルのサポート」を参照してください。
SOAP メッセージの指定部分にデジタル署名する際に使用するダイジェスト アルゴリズムを指定します。暗号化する SOAP メッセージの一部を指定するには、<MessageParts>
兄弟要素を使用します。詳細については、「MessageParts」を参照してください。
SOAP メッセージの指定部分を暗号化する際に使用する暗号化アルゴリズムを指定します。暗号化する SOAP メッセージの一部を指定するには、<MessageParts>
兄弟要素を使用します。詳細については、「MessageParts」を参照してください。
表 5-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 サービスと相互運用する場合は、暗号化アルゴリズムとして |
可 |
認証用にサポートされているセキュリティ トークンのタイプ (ユーザ名、X.509、または SAML) を指定します。
この要素には属性はありません。
SOAP メッセージのデジタル署名に使用するアルゴリズムやキーに加え、SOAP メッセージの一部または全部にデジタル署名するように指定します。
たとえば、Web サービスで、SOAP メッセージの本文全体にデジタル署名する必要があり、SHA1 と RSA キーを使用したアルゴリズムのみを受け付ける場合などです。
表 5-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>
その結果、生成された SOAP メッセージには、以下に抜粋したものに類似の <Timestamp>
ヘッダが付きます。
<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 サービス セキュリティ ランタイムのタイムスタンプ動作を、そのデフォルト値とともに記述するプロパティをリストしています。
表 5-8 タイムスタンプ動作プロパティ
プロパティ | 説明 | デフォルト値 |
---|---|---|
クロックを同期 |
Web サービスで同期化されたクロックを前提とするかどうかを指定する。 |
true |
クロック精度 |
クロックが同期化されている場合に、同期の精度を表す。 注意 : このプロパティは、リリース 9.2 の WebLogic Web サービスでは非推奨。代わりに、クロックのずれプロパティを使用する。両方のプロパティが設定されている場合は、クロックのずれプロパティが優先される。 |
60000 ミリ秒 |
クロックのずれ |
メッセージの送信側と受信側の間で許容する差異 (ミリ秒) を指定する。 |
60000 ミリ秒 |
厳密でない精度 |
クロック精度プロパティの適用方法を緩和できる。 注意 : このプロパティは、リリース 9.2 の WebLogic Web サービスでは非推奨。代わりに、クロックのずれプロパティを使用する。 |
false |
最大処理遅延 |
受信メッセージの鮮度のポリシーを指定する。 |
-1 |
有効期間 |
送信側で発信メッセージが有効であることを要求する時間の長さを表す。 |
60 秒 |
通常、前述のタイムスタンプ プロパティに変更を加える必要が生じることはありません。しかし、実際に必要になった場合は、default_wss
Web サービス セキュリティ コンフィグレーションがまだ存在していなければ、Administration Console を使用してそれを作成し、その後 [タイムスタンプ] タブをクリックして、タイムスタンプ コンフィグレーションを更新しなければなりません。タスクの詳細については、「Web サービス セキュリティ コンフィグレーションの作成」を、これらのタイムスタンプ プロパティの詳細なリファレンス情報については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「ドメイン : Web サービス セキュリティ : タイムスタンプ」を参照してください。
要素の SOAP メッセージにおける、署名または暗号化されるべき SOAP メッセージの部分を、その要素の祖父要素が何であるかに応じて指定します。SOAP メッセージの部分指定を行うには、このアサーション内で XPath 1.0 式または一連のあらかじめ定義された関数のいずれかを使用できます。
MessageParts
アサーションは常に、Target
アサーションの子となります。Target
アサーションは、Integrity
アサーション (SOAP メッセージに対するデジタル署名の方法を指定) または Confidentiality
アサーション (SOAP メッセージに対する暗号化の方法を指定) のいずれかの子とすることができます。
このアサーションの使い方の詳細と、さまざまなサンプルについては、「MessageParts を使用した暗号化または署名を必要とする SOAP メッセージの部分指定」を参照してください。
表 5-9 <MessageParts> の属性
属性 | 説明 | 必須/省略可能 |
---|---|---|
Dialect |
SOAP メッセージにおける、署名または暗号化されるべき部分の認識に使用される固有言語を識別する。この属性を指定しない場合、XPath 1.0 が使用される。 この属性の値は以下のいずれかにする。
これらの言語の使用例については、「MessageParts を使用した暗号化または署名を必要とする SOAP メッセージの部分指定」を参照してください。 |
可 |
親要素によって、認証、暗号化、またはデジタル署名のいずれかで使用できるセキュリティ トークンを指定します。
たとえば、この要素が <Identity>
親要素で定義されている場合、Web サービスを呼び出したクライアント アプリケーションは、SOAP 要求にセキュリティ トークンをアタッチする必要があります。Web サービスによっては、機密データにアクセスできるようにするために、クライアント アプリケーションが、信頼性のある認証局によって発行された SAML 認証トークンを提示しなければならない場合もあります。この要素が <Confidentiality>
の一部の場合、暗号用のトークンが指定されます。
特定のタイプのセキュリティ トークンは、親要素に加え、TokenType
属性の値によって決まります。
セキュアな会話のセキュリティ トークンの有効期間は、デフォルトでは 12 時間です。このデフォルト値を変更するには、「Claims」の説明に従って、<TokenLifeTime>
子要素を含む <Claims>
子要素を追加します。
表 5-10 <SecurityToken> の属性
属性 | 説明 | 必須/省略可能 |
---|---|---|
DerivedFromTokenType |
派生元のセキュリティ トークンを指定する。たとえば、「http://schemas.xmlsoap.org/ws/2005/02/sc/sct」の値は、セキュアな会話トークンの古いバージョンから派生することを示す。 |
不可 |
IncludeInMessage |
SOAP メッセージにトークンを格納するかどうかを指定する。 有効な値は、 この属性のデフォルト値は、 この属性の値は、 |
不可 |
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>
親要素で指定されている順序で実行されます。
表 5-13 <Transform> の属性
属性 | 説明 | 必須/省略可能 |
---|---|---|
URI |
トランスフォーメーション アルゴリズムの URI を指定する。 有効な URI は次のとおり。
これらの変換アルゴリズムの詳細については、 |
可 |
プレーンテキストかパスワードのダイジェストかを SOAP メッセージに表示するように指定します。この要素は、ユーザ名トークンでのみ使用されます。
表 5-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()
関数に対しては、前述のヘッダのリストのうち任意のものを指定できます。