![]() ![]() ![]() ![]() |
メッセージレベルのセキュリティでは、Web サービス クライアントが Oracle Service Bus プロキシ サービスまたはビジネス サービスとの接続を確立した後、プロキシ サービスまたはビジネス サービスがこのメッセージを処理する前に SOAP メッセージに対してセキュリティ チェックが適用されます。
これを、プロキシ サービスのセキュリティと考えることができます。
以下の節では、プロキシ サービスまたはビジネス サービスのメッセージレベルでのセキュリティのコンフィグレーションについて説明します。
注意 : | メッセージレベルのセキュリティの実装には、メッセージレベルのカスタム認証 (カスタム トークンまたはユーザ名/パスワード) でコンフィグレーションされているプロキシ サービスが含まれます。 この節で説明するメッセージレベルのセキュリティ メカニズムは、単独で、または「カスタム認証のコンフィグレーション」で説明するメッセージレベルのカスタム認証と組み合わせて機能します。両方のセキュリティのタイプについては、「WS-Security およびカスタム ユーザ名/パスワードとトークンの組み合わせ」を参照してください。 |
Oracle Service Bus では、HTTP (HTTPS 含む) または JMS プロトコル経由で送信される SOAP メッセージに対し、メッセージレベルのセキュリティをサポートします。通常、これらのプロトコルで提供される転送レベルのセキュリティに加えて、メッセージレベルのセキュリティを使用します。転送レベル、メッセージレベル、または両方のレベルで資格を提供するように Web サービス クライアントに要求できます。両方のレベルで資格を提供するようにクライアントに要求する場合、Oracle Service Bus はプロキシ サービスの認証および認可に対してメッセージレベルの資格を使用します。
Web サービスであるプロキシ サービスまたはビジネス サービスのメッセージレベルのセキュリティ要件を指定するには、Web サービス ポリシー (WS-Policy) フレームワークを使用します。Web サービス ポリシー (WS-Policy) フレームワークについては、「Web サービスのメッセージレベルでのセキュリティのコンフィグレーション」で説明しています。
メッセージレベルのセキュリティでは、プロキシ サービスまたはビジネス サービスが、保護される操作、および Web サービス クライアントが SOAP メッセージ (操作を呼び出す要求を含む) に適用する必要がある次のセキュリティ対策を指定します。
これらのセキュリティ対策のすべてで、SOAP メッセージのセキュリティ トークンをコード化することがクライアントに要求されます。プロキシ サービスまたはビジネス サービスは、SOAP メッセージでのコード化を要求するセキュリティ トークンのタイプを指定します。
Oracle Service Bus では、次の WS-Security トークン プロファイルがサポートされます。
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
)
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf
) http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0.pdf
)
メッセージレベルのセキュリティを要求するプロキシ サービスに SOAP メッセージを送信するために、以下のアクションが発生します。
WS-Security (メッセージレベルのセキュリティを定義する OASIS 標準) の詳細については、『Web Services Security: SOAP Message Security 1.0 (WS-Security 2004)』を参照してください。URL は次のとおりです。http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
メッセージの整合性とメッセージの機密性によってメッセージが仲介で参照または改ざんされていないことが保証され、メッセージ認証によってクライアントは既知のユーザであるという立証を要求されますが、これはどの既知のユーザがプロキシ サービス操作を呼び出すことを許可 (認可) されているかを指定するものではありません。
認可されたユーザにアクセスを制限するには、Oracle Service Bus Console を使用してメッセージレベルのアクセス制御ポリシーを作成します。これらのポリシーにより、認可されたクライアントからの SOAP メッセージのみをプロキシ サービスで処理できます。
着信メッセージレベルのセキュリティ用に次のいずれかの方法をサポートするように、プロキシ サービスをコンフィグレーションできます。
プロキシ サービスは、クライアントの SOAP メッセージのヘッダを処理し、そのメッセージに対してメッセージレベルのアクセス制御ポリシーを強制します。
たとえば、クライアントは SOAP メッセージを暗号化して署名し、そのメッセージをプロキシ サービスに送信します。プロキシ サービスはメッセージを復号化してデジタル署名を確認してから、メッセージをルーティングします。プロキシ サービスは、応答をクライアントに返す前に、メッセージに署名して暗号化します。クライアントはメッセージを復号化し、プロキシ サービスのデジタル署名を確認します。
プロキシ サービスは、クライアントの SOAP メッセージのヘッダを処理する代わりに、メッセージをそのままビジネス サービスに渡します。プロキシ サービスは SOAP メッセージの保護されたセクションを処理しませんが、ヘッダの値に基づいてメッセージをルーティングできます。ビジネス サービスは、メッセージを受け取ると、セキュリティ ヘッダを処理し、要求に応答します。ビジネス サービスは Web サービス ポリシー (WS-Policy) フレームワークを使用して、メッセージレベルのセキュリティで保護されている操作を記述する必要があります。ビジネス サービスは応答をプロキシ サービスに送信し、プロキシ サービスは応答をそのままクライアントに渡します。
たとえば、クライアントはメッセージを暗号化して署名し、そのメッセージをプロキシ サービスに送信します。プロキシ サービスはメッセージの復号化、またはデジタル署名の確認を行いません。単にメッセージをビジネス サービスにルーティングします。ビジネス サービスはメッセージを復号化してデジタル署名を確認してから、要求を処理します。応答パスは同様です。
アクティブな仲介として動作するようにプロキシ サービスを作成するには
『Oracle Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。
__SERVICE_BUS_INBOUND_WEB_SERVICE_SECURITY_MBEAN__
という Web サービス セキュリティ コンフィグレーションを行う。「WebLogic Security フレームワークのコンフィグレーション : 主な手順」の手順 2 を参照してください。
「ビジネス サービスのメッセージレベルのセキュリティのコンフィグレーション : 主な手順」を参照してください。
クライアントの SOAP メッセージが呼び出しを要求する操作に基づいてビジネス サービスにルーティングする場合は、SOAP 本体のアルゴリズム以外の操作選択アルゴリズムを指定するようにルーティングをコンフィグレーションする必要があります。プロキシ サービス パイプラインのアクションによって、署名または暗号化された WS-Security ヘッダまたは SOAP エンベロープの部分が変更されないことを確認します。デジタル署名されたクリアテキストのメッセージ部分を変更すると、ほとんどの場合、デジタル署名は壊れます。これは、後で署名を検証できないためです。
『Oracle Service Bus Console の使い方』の「プロキシ サービス」を参照してください。
発信メッセージレベルのセキュリティは、Oracle Service Bus プロキシ サービスと SOAP-HTTP ビジネス サービス間のメッセージ、または Oracle Service Bus プロキシ サービスと SOAP-JMS ビジネス サービス間のメッセージに適用されます。また、このセキュリティは要求と応答の両方に適用されます。
SOAP-HTTP または SOAP-JMS Web サービスを表すビジネス サービスに対して発信メッセージレベルのセキュリティをコンフィグレーションするには
『Oracle Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。
注意 : | 暗号化されるバックエンドの応答メッセージ : ビジネス サービスの応答ポリシーで暗号化を指定する場合、プロキシ サービスは要求時に暗号化証明書をビジネス サービスに送信します。ビジネス サービスは、プロキシ サービスの公開鍵を使用して応答を暗号化します。プロキシ サービスの暗号化資格は、ビジネス サービスの暗号化資格と異なることが必要です。 |
『 Oracle Service Bus Console の使い方』のビジネス サービスを参照してください。
「アクティブな仲介プロキシ サービスの作成 : 主な手順」を参照してください。
以下の節では、WS-Policy 仕様に基づき、Oracle 独自のセキュリティ ポリシー スキーマを使用して記述されたカスタム WS-Policy ステートメントの例を示します。
SOAP メッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタム WS-Policy ファイルを作成する必要があります。
コード リスト 7-1 は、以下を実行する抽象 WS-Policy ステートメントです。
このポリシーは抽象的であるため、ビジネス サービスでは使用できません。KeyInfo
要素には、暗号化で使用する証明書が含まれません。代わりに、この WS-Policy ステートメントを使用するプロキシ サービスのアクティブ化時に、Oracle Service Bus は WS-Policy ステートメントを、プロキシ サービスと関連付けたサービス キー プロバイダの暗号化証明書とバインドします。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
また、コード リスト 7-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 サービス セキュリティを確保します。「プロキシ サービスのメッセージレベルのアクセス制御ポリシー」を参照してください。
コード リスト 7-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>
コード リスト 7-3 は、CreditCardNumber
というカスタム ヘッダを暗号化する抽象 WS-Policy ステートメントです。
SOAP メッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタム WS-Policy ファイルを作成する必要があります。
このポリシーは抽象的であるため、ビジネス サービスでは使用できません。KeyInfo
要素には、暗号化で使用する証明書が含まれません。代わりに、この WS-Policy ステートメントを使用するプロキシ サービスのアクティブ化時に、Oracle Service Bus は WS-Policy ステートメントを、プロキシ サービスと関連付けたサービス キー プロバイダの暗号化証明書とバインドします。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。
また、コード リスト 7-3 では、以下も行います。
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"
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>
コード リスト 7-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>
コード リスト 7-5 は、holder-of-key メソッドを使用してメッセージ本体に署名するよう SAML アサーション プロバイダに要求する WS-Policy ステートメントです。「holder-of-key」サブジェクト確認が指定された SAML トークンは、要求メッセージの整合性を確保するために、受信側で信頼されていない可能性のある X.509 証明書をサブジェクトで使用できるようにすることを目的としたものです。
2 つの SAML 確認メソッド (sender-vouches または holder-of-key) の詳細については、「WebLogic Web サービスでの SAML トークン プロファイルのサポート」を参照してください。
WebLogic Server セキュリティ ポリシー アサーションのリファレンスでは、ポリシー要素について詳細に説明しています。
Integrity
は、SOAP メッセージの署名に使用するアルゴリズムやキーに加え、SOAP メッセージの一部または全体にデジタル署名することを指定します。 SignatureAlgorithm
は、デジタル署名の計算に使用する暗号アルゴリズムを指定します。CanonicalizationAlgorithm
は、デジタル署名する SOAP メッセージの要素を標準化する (単純なまたは標準の形式で使用する) ために使用するアルゴリズムを指定します。指定できるのは、http://www.w3.org/2001/10/xml-exc-cl4n#
のみです。 DigestAlgorithm
は、SOAP メッセージの指定部分にデジタル署名する際に使用するダイジェスト アルゴリズムを指定します。指定できるのは、http://www.w3.org/2000/09/xmldsig#sha1
のみです。MessageParts
は、署名されるべき SOAP メッセージの部分を指定します。この場合は本体です。 Dialect
は、署名されるべき SOAP メッセージの部分の識別に使用される固有言語を指定します。 SupportedTokens
は、デジタル署名で使用できる、サポートされているセキュリティ トークンのリストを指定します。 SecurityToken
は、デジタル署名でサポートされているセキュリティ トークンを指定します。
IncludeInMessage
は、SOAP メッセージにトークンを格納するかどうかを指定します。有効な値は、true または false です。この属性のデフォルト値は、<Integrity> アサーションで使用する場合は true です。TokenType
は、セキュリティ トークンのタイプを指定します。この場合は、SAML トークンを指定する http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID
です。 Claims
は、特定のタイプのセキュリティ トークンに関連付けられる追加メタデータ情報を指定します。SAML トークンの場合、<ConfirmationMethod> 子要素を定義して、SAML 確認のタイプ (sender-vouches または holder-of-key) を指定する必要があります。 ConfirmationMethod
は、ID に SAML トークンを使用する場合に使う確認メソッドのタイプ (sender-vouches または holder-of-key) を指定します。<Integrity>
アサーション内の <ConfirmationMethod>
アサーションを指定します。この確認メソッドのための <Integrity>
アサーションに SAML トークンを入れるのは、Web サービス ランタイムで、メッセージの整合性の証明が必要なためです (sender-vouches では必要とされません)。 <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"
</wssp:Claims>
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:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
</wsp:Policy>
コード リスト 7-6 は、sender-vouches メソッドを使用してメッセージ本体とヘッダに署名するよう SAML アサーション プロバイダに要求する WS-Policy ステートメントです。
sender-vouches では、(サブジェクトとは異なる) アサーション側がサブジェクトの検証を保証します。受信側がアサーション側との信頼関係を確立している必要があります。
2 つの SAML 確認メソッド (sender-vouches または holder-of-key) の詳細については、「WebLogic Web サービスでの SAML トークン プロファイルのサポート」を参照してください。
WebLogic Server セキュリティ ポリシー アサーションのリファレンスでは、ポリシー要素について詳細に説明しています。
Identity
は、セキュリティ トークンのタイプを指定します。 SupportedTokens
は、デジタル署名で使用できる、サポートされているセキュリティ トークンのリストを指定します。 SecurityToken
は、デジタル署名でサポートされているセキュリティ トークンを指定します。
IncludeInMessage
は指定しません。この属性の値は、<Identity>
アサーションで使用する場合、明示的に false に設定したとしても、常に true であるためです。TokenType
は、セキュリティ トークンのタイプを指定します。この場合は、SAML トークンを指定する http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-token-profile-1.0#SAMLAssertionID
です。 Claims
は、特定のタイプのセキュリティ トークンに関連付けられる追加メタデータ情報を指定します。SAML トークンの場合、<ConfirmationMethod> 子要素を定義して、SAML 確認のタイプ (sender-vouches または holder-of-key) を指定する必要があります。 ConfirmationMethod
は、ID に SAML トークンを使用する場合に使う確認メソッドのタイプ (sender-vouches または holder-of-key) を指定します。 Integrity
は、SOAP メッセージの署名に使用するアルゴリズムやキーに加え、SOAP メッセージの一部または全体にデジタル署名することを指定します (この例の場合は、本体とセキュリティ ヘッダの両方)。 SignatureAlgorithm
は、デジタル署名の計算に使用する暗号アルゴリズムを指定します。CanonicalizationAlgorithm
は、デジタル署名する SOAP メッセージの要素を標準化する (単純なまたは標準の形式で使用する) ために使用するアルゴリズムを指定します。指定できるのは、http://www.w3.org/2001/10/xml-exc-cl4n#
のみです。 Target
は、親要素によって異なる、暗号化または署名する SOAP メッセージの対象に関する情報をカプセル化します。子要素も、親要素によって異なります。 DigestAlgorithm
は、SOAP メッセージの指定部分にデジタル署名する際に使用するダイジェスト アルゴリズムを指定します。指定できるのは、http://www.w3.org/2000/09/xmldsig#sha1
のみです。MessageParts
は、署名されるべき SOAP メッセージの部分を指定します。この場合は本体およびセキュリティ ヘッダです。Dialect
は、署名されるべき SOAP メッセージの部分の識別に使用される固有言語を指定します。 Confidentiality
は、SOAP メッセージの暗号化に使用するアルゴリズムやキーに加え、SOAP メッセージの一部または全部を暗号化することを指定します。この例では、triple-DES を使用して、本体およびセキュリティ ヘッダを暗号化する必要があります。 <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:ConfirmationMethod>
<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: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:MessageParts>
<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:Target>
<wssp:Target>
<wssp:DigestAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
</wssp:Target>
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(Assertion)
</wssp:MessageParts>
</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
</wssp:MessageParts>
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(Assertion)
</wssp:Target>
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
</wssp:MessageParts>
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:Target>
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>
使用頻度の少ない設計パターンには、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成が回避され、XQuery 式を使用してエンベロープを作成できるものがあります。この設計パターンを使用する場合、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成を回避するには、$outbound
メッセージ コンテキスト変数の ./ctx:security/ctx:doOutboundWss
要素の値を xs:boolean("false")
に設定するアクションをプロキシ サービスのメッセージ フローに作成する必要があります。このアクションは、次のいずれかの場所で作成できます。
$outbound
メッセージ コンテキスト変数については、Oracle Service Bus ユーザーズ ガイドの「メッセージ コンテキスト」を参照してください。
状況によっては、発信メッセージレベルのセキュリティを無効にしてプロキシ サービスを作成または変更したセッションをアクティブ化しようとすると、Oracle Service Bus Console に検証エラーが表示されます (エラーのあるセッションはコミットできません)。発信メッセージレベルのセキュリティを無効にしているためにセッションの検証エラーが表示される場合は、Oracle Service Bus の起動コマンドを変更して、次のシステム プロパティを true
に設定します。com.bea.wli.sb.security.wss.LaxOutboundWssValidation
次に、Oracle Service Bus を再起動します。このプロパティを true
に設定すると、Oracle Service Bus Console にはエラーではなく警告が表示されます (警告メッセージが表示されるセッションはコミットできます)。
Oracle Service Bus の今後のリリースで、発信メッセージレベルのセキュリティの無効化を容易にする方法が提供される予定です。
![]() ![]() ![]() |