![]() ![]() ![]() ![]() |
Web サービスであるプロキシ サービスまたはビジネス サービスの着信メッセージレベルのセキュリティ要件を指定するには、Web サービス ポリシー (WS-Policy) フレームワークを使用します。以下の節では、プロキシ サービスとビジネス サービスの WS-Policy のコンフィグレーションについて説明します。
Web サービス ポリシー (WS-Policy) は、Web サービスのセキュリティ制約と要件を定義するための標準ベースのフレームワークです。WS-Policy では、それぞれ 1 つまたは複数のアサーションを含む、ポリシーと呼ばれる XML ステートメントの集合でセキュリティ制約と要件を表します。
AquaLogic Service Bus では、WS-Policy アサーションを使用して、デジタル署名や暗号化に対する Web サービスの要件、および必要なセキュリティ アルゴリズムや認証メカニズムを指定します。
WS-Policy 仕様は完全には標準化されていないため、AquaLogic Service Bus では、2002 年 12 月 18 日バージョンの Web サービス セキュリティ ポリシー言語 (WS-SecurityPolicy) 仕様に記述されているアサーションに基づく WebLogic Server 独自の形式をサポートしています。AquaLogic Service Bus の今回のリリースには、最新版の仕様 (2005 年 7 月 13 日) は組み込まれていません。WS-Policy 仕様にはセキュリティ アサーションと信頼性の高いメッセージング アサーションの両方が定義されていますが、AquaLogic Service Bus ではセキュリティ アサーションのみをサポートします。AquaLogic Service Bus のセキュリティ アサーションの構文と使用方法は WS-Policy 仕様によって異なりますが、このアサーションの意味合いは同じで、WebLogic Server 9.0 および 9.1 Web サービスで使用されるセキュリティ アサーションと完全に互換性があります。
WS-Policy ポリシーは WSDL ドキュメントに直接、または参照によって含まれます。WSDL ドキュメントは、WS-Policy ポリシーを含むか参照する他の WSDL ドキュメントをインポートできます。これらのポリシーを含む XML ファイルは、複数のプロキシ サービスまたはビジネス サービスから使用できます。
WebLogic Web サービス実行時環境では、2 つのタイプの WS-Policy ステートメントを認識します。
必要な認証のタイプ (X.509 または SAML トークンの使用など)、暗号化やデジタル署名のために複数のプライベート キーと証明書のペアがキーストアから使用されるかなどが設計時にわかっている場合は、具象 WS-Policy ステートメントを作成できます。
<Identity>
要素や <Integrity>
要素 (またはアサーション) に <SupportedTokens><SecurityToken>
子要素が含まれないこと、および WS-Policy ファイルの <Confidentiality>
要素に <KeyInfo><SecurityToken>
子要素が含まれないことです。
抽象ポリシーが受け取るセキュリティ トークンのタイプは、AquaLogic Service Bus の実行時環境で決定します。特定のタイプのトークンを受け取るような実行時環境のコンフィグレーションについては、「着信メッセージレベルのセキュリティのコンフィグレーション」の手順 3 を参照してください。
AquaLogic Service Bus には、単純な抽象 WS-Policy ポリシーを含む 3 つの XML ファイルがあります。
Auth.xml
- Web サービス クライアントに認証を要求するポリシーが含まれます。 Encrypt.xml
- クライアントに SOAP 本体を 3DES-CBC で暗号化するように要求するポリシーが含まれます。キー ラップ アルゴリズムは RSA 1.5 です。Triple DES (Data Encryption Standard) の対称キーはクライアントが生成し、受信者用に RSA 1.5 で暗号化します。
このポリシーはビジネス サービスでは使用できません。代わりに、独自の具象暗号化ポリシーを作成します。「カスタム WS-Policy ステートメントの作成と使用」を参照してください。
Sign.xml
- クライアントに SOAP 本体を署名するように要求するポリシーが含まれます。署名したタイムスタンプをクライアント側の WS-Security エンジンが wsse:Security
ヘッダに追加するよう要求します。この署名により、特定のリプレイ攻撃を防止できます。システム ヘッダもすべて署名されます。デジタル署名アルゴリズムは RSA-SHA1 です。Exclusive XML Canonicalization が使用されます。
AquaLogic Service Bus のポリシー ファイルは、WebLogic Server で提供されるポリシー ファイルと同じです。これらの XML ファイルの内容については、『WebLogic Web サービス プログラマーズ ガイド』の「セキュリティのコンフィグレーション」にある「WebLogic Server WS-Policy ファイル」を参照してください。
これらのあらかじめパッケージされたポリシーをできる限り使用することをお勧めします。ただし、次の条件下ではこれらのポリシーを使用できません。
confirmationMethod
を指定する必要があるため、必ず具象ポリシーになります。
プロキシ サービスまたはビジネス サービスでのこれらのポリシーの使用については、「WSDL ドキュメントへの WS-Policy ステートメントの付加」を参照してください。
AquaLogic Service Bus WS-Policy ステートメントがセキュリティ要件を満たさない場合は、独自の WS-Policy ステートメント (カスタム WS-Policy ステートメント) を作成できます。AquaLogic Service Bus WS-Policy ステートメントを変更することはできません。
Web サービスの WSDL ドキュメントに直接カスタム WS-Policy ステートメントを記述できます。または、複数の Web サービスでステートメントを再利用する場合は、別の XML ファイルに記述し、AquaLogic Service Bus にインポートして、WSDL ドキュメントから参照できます。
AquaLogic Service Bus の WS-Policy ステートメントでは次の制限に注意してください。
Id
属性を持つ必要がある。http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
この属性の値は、AquaLogic Service Bus ドメイン内にあるすべての WS-Policy ステートメントについてユニークである必要があります。この属性は WS-Policy スキーマでは省略可能ですが、AquaLogic Service Bus Web サービスでは必須です。
以下の節では、カスタム WS-Policy ステートメントの例を示します。
SOAP メッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタム WS-Policy ファイルを作成する必要があります。
コード リスト 6-1 は、以下を実行する抽象 WS-Policy ステートメントです。
このポリシーは抽象的であるため、ビジネス サービスでは使用できません。KeyInfo
要素には、暗号化で使用する証明書が含まれません。代わりに、この WS-Policy ステートメントを使用するプロキシ サービスのアクティブ化時に、AquaLogic Service Bus は WS-Policy ステートメントを、プロキシ サービスと関連付けたプロキシ サービス プロバイダの暗号化証明書とバインドします。『AquaLogic Service Bus Console の使い方』の「プロキシ サービス プロバイダ」を参照してください。
また、コード リスト 6-1 では、以下を実行します。
KeyWrappingAlgorithm
要素で、対称キーをラップする RSA 1.5 アルゴリズムをクライアントが使用する必要があることを記述する。EncryptionAlgorithm
で、クライアントが Triple DES (Data Encryption Standard) アルゴリズムを使用してセキュリティ ヘッダとメッセージ本体の暗号化を実行する必要があることを記述する。 <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:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-secext-1.0.xsd"
xmlns:m="http://example.org"
wsu:Id="encrypt-custom-body-element-and-username-token">
<!-- 認証のためにメッセージでユーザ名とパスワードを提供するように
要求する -->
<wssp:Identity>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-username-token-profile-1.0#UsernameToken">
<wssp:UsePassword Type="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
</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(wsse:UsernameToken)
</wssp:MessageParts>
</wssp:Target>
<!-- /definitions/message/CreditCardNumber 要素の
暗号化を要求する -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts>
wsp:GetBody(.)/m:CreditCardNumber
</wssp:MessageParts>
</wssp:Target>
<!-- KeyInfo 要素が空なので、これは抽象ポリシー。
KeyInfoデータは実行時にポリシーにバインドされる -->
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>
ビジネス サービスへのメッセージを暗号化する場合は、カスタム WS-Policy を作成する必要があります。ポリシーは具象的 (プロキシ サービス プロバイダの証明書を使用するのではなく、暗号化証明書を含む必要があります) であること、および参照によって含めるのではなく、WSDL ドキュメントに直接記述することが必要です。
通常、ビジネス サービスへのメッセージを送信するプロキシ サービスがパススルー プロキシ サービスである場合は、ビジネス サービスへのメッセージを暗号化する必要があります。つまり、クライアントからメッセージを受信するプロキシ サービスは、SOAP メッセージを処理しません。代わりに、プロキシ サービスはメッセージをビジネス サービスにルーティングし、ビジネス サービスが Web サービス セキュリティを確保します。「着信メッセージレベルのセキュリティのコンフィグレーション」を参照してください。
コード リスト 6-2 は、具象ポリシーを含む WSDL ドキュメントです。この例では、以下に注意してください。
KeyInfo
要素は、暗号化証明書を記述して埋め込むために使用する親要素である。BinarySecurityToken
要素には、base-64 エンコード形式の暗号化証明書が含まれます (例では、値は切り捨てられています)。証明書が PEM 形式である場合、PEM ファイル (PEM プレフィックスとサフィックスなし) の内容は base-64 エンコード形式で表される証明書です。暗号化証明書が JDK キーストアに格納されている場合は、簡単に PEM ファイルにエクスポートできます。<definitions name="WssServiceDefinitions"
targetNamespace="http://com.bea.alsb/tests/wss"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
...>
<wsp:UsingPolicy xmlns:n1="http://schemas.xmlsoap.org/wsdl/"
n1:Required="true"/>
<!-- ポリシーでユニーク ID を提供する -->
<wsp:Policy wsu:Id="myEncrypt.xml">
<wssp:Confidentiality
xmlns:wssp="http://www.bea.com/wls90/security/policy">
<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://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<!-- トークンのタイプと暗号化証明書を埋め込む -->
<wssp:KeyInfo>
<wssp:SecurityToken
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-x509-token-profile-1.0#X509v3"/>
<wssp:SecurityTokenReference>
<wssp:Embedded>
<wsse:BinarySecurityToken
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-soap-message-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-x509-token-profile-1.0#X509v3"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-secext-1.0.xsd">
MIICfjCCAeegAwIBAgIQV/PDyj3...
</wsse:BinarySecurityToken>
</wssp:Embedded>
</wssp:SecurityTokenReference>
</wssp:KeyInfo>
</wssp:Confidentiality>
</wsp:Policy>
<binding name="WssServiceSoapBinding" type="tns:WssService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getPurchaseOrder">
<soap:operation soapAction="" style="document"/>
<input>
<soap:body parts="parameters" use="literal"/>
<!-- URI フラグメントを使用してユニーク ポリシー ID を参照する -->
<wsp:Policy>
<wsp:PolicyReference URI="#myEncrypt.xml"/>
</wsp:Policy>
</input>
<output>
<soap:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
...
</definitions>
コード リスト 6-3 は、CreditCardNumber
というカスタム ヘッダを暗号化する抽象 WS-Policy ステートメントです。
<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"
wsu:Id="dig-sig-for-get-header">
<wssp:Confidentiality>
<wssp:KeyWrappingAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<!-- カスタム CreditCardNumber ヘッダの暗号化を要求する -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
wsp:GetHeader(.)/n:CreditCardNumber
</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>
コード リスト 6-4 は、SOAP メッセージの次の内容へのアクセスにデジタル署名を要求する WS-Policy ステートメントです。
header1
というカスタム ヘッダ <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"
wsu:Id="sign-custom-header-policy">
<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#"/>
<!-- カスタム ヘッダ header1 の署名を要求する -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-secext-1.0.xsd"
xmlns:n="http://example.org">
wsp:GetHeader(.)/n:header1
</wssp:MessageParts>
</wssp:Target>
<!-- システム ヘッダの署名を要求する -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<!-- タイムスタンプ ヘッダの署名を要求する -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<!-- メッセージ本体の署名を要求する -->
<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:Integrity>
<wssp:MessageAge/>
</wsp:Policy>
コード リスト 6-5 は、holder-of-key を使用してメッセージ本体に署名するよう SAML アサーション プロバイダに要求する WS-Policy です。SAML holder-of-key については、Web Services Security SAML Token Profile 1.0 (http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0.pdf
) を参照してください。
<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"
wsu:Id="saml-holder-of-key-signed">
<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>
コード リスト 6-5 は、sender-vouches を使用してメッセージ本体とヘッダに署名するよう SAML アサーション プロバイダに要求する WS-Policy です。SAML sender-vouches については、Web Services Security SAML Token Profile 1.0 (http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0.pdf
) を参照してください。
<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"
wsu:Id="samlPolicy-sender-vouches-signed-encrypted">
<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: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:Target>
<wssp:DigestAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(Assertion)
</wssp:MessageParts>
</wssp:Target>
</wssp:Integrity>
<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>
AquaLogic Service Bus では、WS-Policy ステートメントを Web サービスを関連付けるメカニズムを定義する WS-Policy Attachment 仕様 (http://www.w3.org/Submission/WS-PolicyAttachment/) を実装しています。
Web サービスのために WS-Policy ステートメントを WSDL ドキュメントに付加するには
<definitions>
要素に、次の子要素を追加します。<
wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
wsdl:required="true"
属性によって、プロキシ サービスとビジネス サービスがポリシーの付加を処理できることが保証されます。
この要素を追加しないと、AquaLogic Service Bus では WSDL のすべての WS-Policy ステートメントが無視されます。
AquaLogic Service Bus WS-Policy ステートメントでは、URL は常に次のようになります。
WS-Policy ステートメントが WSDL ドキュメントに直接記載される場合、URI は次のようになります。#
policy-ID
ここで、policy-ID
はポリシーの wsu:ID
属性の値です。コード リスト 6-8 を参照してください。
別の XML ファイルに作成して AquaLogic Service Bus にリソースとして追加した WS-Policy ステートメントの場合、URI は次のようになります。policy:
policy-ID
ここで、policy-ID
はポリシーの wsu:ID
属性 (ポリシーの XML ファイルで指定) の値です。
また、UDDI を使用して WS-Policy ステートメントを WSDL ドキュメントに付加することもできます。この場合、URI は別の形になります。詳細については、WS-Policy Attachment 仕様 (http://www.w3.org/Submission/WS-PolicyAttachment/) を参照してください。
WSDL ドキュメントで URI を指定するには、次のいずれかの方法を使用します。
PolicyURIs
属性
WSDL スキーマ (http://www.w3.org/TR/wsdl を参照) によって、保護する要素に対して属性の拡張が可能な場合は、その要素に PolicyURIs
グローバル属性を追加します。
この要素の値では、それぞれ 1 つのポリシーを参照する URI のリストを指定します。
たとえば、次のようになります。<input message="tns:foo" wsp:PolicyURIs="policy:Sign.xml"/>
<Policy>
要素
WSDL スキーマによって、保護する要素に対する要素の拡張が可能な場合は、グローバル子要素として <Policy>
を追加します。使用する各 WS-Policy に対し、<Policy>
要素の子として 1 つの <PolicyReference>
要素を追加します。
各 <PolicyReference>
要素に対し、1 つのポリシーを参照する URI 属性を含めます。また、ダイジェストとダイジェスト アルゴリズムを要素に含めることもできます。
たとえば、次のようになります。<wsp:Policy>
<wsp:PolicyReference URI="policy:Sign.xml"/>
</wsp:Policy>
表 6-1 は、WS-Policy ステートメントの URI を指定するために使用する WSDL 要素の XPath 名および方法のリストです。また、AquaLogic Service Bus で WS-Policy ステートメントの付加をサポートしない WSDL 要素も示します。
次の要素またはその子孫に WS-Policy ステートメントを付加することをお勧めします。
次の要素に WS-Policy ステートメントを付加しないことをお勧めします。
WS-Policy ステートメントが認証を行うために X.509 トークンを必要とする場合は、デジタル署名も必要です。クライアントが対応するプライベート キー付きのコンテンツに署名していないと、X.509 トークンは ID アサーションを満たすことができません。
認証およびデジタル署名に対して X.509 証明書を使用するようクライアントに要求するプロキシ サービスを作成するには、次の操作を行います。
Sign.xml
ファイルと Auth.xml
ファイルにある AquaLogic Service Bus ポリシーを付加します。コード リスト 6-7 を参照してください。
AquaLogic Service Bus の Sign.xml
ポリシーと Auth.xml
ポリシーは抽象的であるため、プロキシ サービスと関連付けられたプロキシ サービス プロバイダで指定される資格を提供するようクライアントに要求します。
コード リスト 6-7 は、AquaLogic Service Bus の Sign.xml
ポリシーと Auth.xml
ポリシーへの参照を持つ WSDL です。
<definitions
...
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401
-wss-wssecurity-utility-1.0.xsd">
<wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
...
<portType name="Sample">
<operation name="doFoo" parameterOrder="data">
<input message="tns:foo" wsp:PolicyURIs="policy:Sign.xml"/>
<output message="tns:fooResponse"/>
</operation>
</portType>
<binding name="SampleBinding" type="tns:Sample">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doFoo">
<wsp:Policy>
<wsp:PolicyReference URI="policy:Sign.xml"/>
<wsp:PolicyReference URI="policy:Auth.xml"/>
</wsp:Policy>
...
</operation>
</binding>
...
</definitions>
コード リスト 6-8 は、wsu:Id="policy1"
と wsu:Id="policy2"
という 2 つのカスタム WS-Policy ポリシーを持つ WSDL です。ポリシーは WSDL に記述されるため、これらのポリシーを参照する URI は XML フラグメントを使用します。
<definitions
...
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-utility-1.0.xsd">
<wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
<wsp:Policy wsu:Id="policy1">...</wsp:Policy>
<wsp:Policy wsu:Id="policy2">...</wsp:Policy>
...
<portType name="Sample">
<operation name="doFoo" parameterOrder="data">
<input message="tns:foo" wsp:PolicyURIs="#policy1"/>
<output message="tns:fooResponse"/>
</operation>
</portType>
<binding name="SampleBinding" type="tns:Sample">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doFoo">
<wsp:Policy>
<wsp:PolicyReference URI="#policy2"/>
</wsp:Policy>
<soap:operation
soapAction="http://com.bea.samples/sample/doFoo"
style="document"/>
<input>
<soap:body namespace="http://com.bea.samples/sample"
use="literal"/>
</input>
<output>
<soap:body namespace="http://com.bea.samples/sample"
use="literal"/>
</output>
</operation>
</binding>
...
</definitions>
ポリシー サブジェクトは、サービス、エンドポイント、操作、メッセージなどのエンティティであり、これにポリシーを関連付けることができます。1 つの WS-Policy ステートメントを複数のポリシー サブジェクトと関連付けることができ、反対に、複数の WS-Policy ステートメントを 1 つのポリシー サブジェクトを関連付けることができます。ポリシー スコープは、ポリシーが適用されるポリシー サブジェクトの集合です。たとえば、wsdl:binding/wsdl:operation/wsdl:input
に付加されたポリシーが適用されるポリシー スコープは、入力メッセージ、操作、エンドポイント、およびサービスです。
特定のポリシー サブジェクトの有効ポリシーは、スコープにそのポリシー サブジェクトを含むすべてのポリシーを結合したものになります。たとえば、バインディング操作の入力メッセージの有効ポリシーは、以下に付加されるすべてのポリシーを結合したものになります。
以下の図に示すように、WS-Policy ステートメントを使用してプロキシ サービスまたはビジネス サービスをコンフィグレーションした場合、AquaLogic Service Bus Console に有効ポリシーが表示されます (読み込み専用)。
![]() ![]() ![]() |