2

WSO2 ESB 4.0.3 で定義されたプロキシ サービスに複数のセキュリティ ポリシーを適用しようとしています。操作レベルで 1 つのポリシーを適用し、メッセージ レベルで別のポリシーを適用する必要があります。

Web UI/ポリシー エディターを使用する代わりに、ソース ビューを使用してプロキシ サービスを直接定義しています。

ここで説明するように、各ポリシーを定義しようとしました。

http://docs.wso2.org/display/ESB403/Policies+for+Service

しかし、生成された WSDL は、それが間違った階層に適用されていることを示しています。

この機能が WSO2 ESB でサポートされているかどうか、または私のやり方が間違っているかどうかアドバイスをお願いします!

私のプロキシ

<proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable">
    <target endpoint="SimpleStockQuoteService_noSuspendOnFailure_TCPMon">
        <inSequence>
            <header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="wsse:Security" action="remove"/>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </target>
    <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_3.wsdl"/>
    <policy key="sec_operation-Policy"/>
    <policy key="sec_InOut-Policy"/>
    <enableSec/>
</proxy> 

私のメッセージ レベル ポリシー

<wsp:PolicyAttachment wsu:Id="Service_message_policy_attachment" 
            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" 
            xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:AppliesTo>
<policy-subject identifier="binding:soap11/operation:getQuote/in"/>
<policy-subject identifier="binding:soap12/operation:getQuote/in"/>
</wsp:AppliesTo>
<wsp:Policy wsu:Id="Service_message_policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:SignedParts>
                <sp:Body />
               <sp:Header Name="To"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="From"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="FaultTo"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="ReplyTo"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="MessageID"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="RelatesTo"
                  Namespace="http://www.w3.org/2005/08/addressing" />
               <sp:Header Name="Action"
                  Namespace="http://www.w3.org/2005/08/addressing" />
            </sp:SignedParts>
            <sp:EncryptedParts>
                <sp:Body />
            </sp:EncryptedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>
</wsp:PolicyAttachment>
4

3 に答える 3

2

これは WSO2 ESB でサポートされています。

実際問題は、あなたが関与しようとしているメッセージ レベルのポリシーにあります。ポリシー要素ではなく、ポリシー アタッチメント要素を提供しようとしています。このアプローチは、services.xml を介して Axis2 サービスに複数のポリシーを適用しようとしている場合に有効です。ただし、Carbon ポリシー エディターを使用している場合は、有効なポリシー要素を提供する必要があります。

次のポリシー要素は、使用したポリシー添付要素から派生できます。

<wsp:Policy 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" wsu:Id="Service_message_policy">
    <wsp:ExactlyOne>
        <wsp:All>
            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body />
                <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing" />
                <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing" />
            </sp:SignedParts>
            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                <sp:Body />
            </sp:EncryptedParts>
        </wsp:All>
    </wsp:ExactlyOne>
</wsp:Policy>

お役に立てれば !

于 2012-04-10T13:28:00.863 に答える
2

ポリシー エディタを使用してポリシーを編集し、バインディング階層内のさまざまなポリシー サブジェクトにポリシーを適用できます。さまざまなセキュリティ ポリシーを使用して要求と応答メッセージを保護するを参照してください。このサンプルでは、​​さまざまなセキュリティ ポリシーを受信メッセージと送信メッセージに適用する方法を示しています。

このサンプルservices.xmlは、axis2 サービスの を直接編集します。

ESB のポリシー エディターでポリシーを変更して保存すると、同じ効果が得られます。

それでも問題が解決しない場合は、編集した policy.xml と結果の wsdl を添付してください。問題をより深く理解するのに役立ちます。

于 2012-04-10T09:06:38.813 に答える
0

いくつかの調査を行った後、いくつかの潜在的な解決策を見つけたので、あなたと共有したいと思います.

問題 1: セキュリティ ポリシーを詳細なレベルで適用できない。

解決 :

でセキュリティ ポリシーを適用できました

1.) ルートレベル

2.) 操作レベルと

3.) メッセージレベル

operationNameoperationNamespace の使用

<proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable">
    <target endpoint="SimpleStockQuoteService_noSuspendOnFailure_TCPMon">
        <inSequence>
            <header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" name="wsse:Security" action="remove"/>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </target>
    <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_3.wsdl"/>
    <!-- Default policy for all operations   -->
    <policy key="sec_SigOnly"/>
    <!--  policy for  getFullQuote operation , in and Out message   -->
    <policy key="SigEncrSTS" operationName="getFullQuote" operationNamespace="http://services.samples"/>
    <!--  policy for  getQuote operation , in  message   -->
    <policy key="sec_InOut-Policy" operationName="getQuote" operationNamespace="http://services.samples" type="in"/>
    <enableSec/>
</proxy> 

問題 2: プロキシ サービスがデプロイされると、公開された WSDL が自動的に生成され、それをカスタマイズする制御が制限されているか、まったく制御されていません。

解決策: プロパティuseOriginalwsdlを使用して、IP/ポートのみをプロキシ IP/ポートに変更して、元の提供された WSDL を公開できました。

<proxy name="STSProxy" transports="https http" startOnLoad="true" trace="disable">
    <target endpoint="PingSTS_UT">
        <inSequence>
            <property name="preserveProcessedHeaders" value="true" scope="default"/>
            <log level="full"/>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </target>
    <publishWSDL key="wsdl_sts"/>
    <parameter name="useOriginalwsdl">true</parameter>

WSO2 のサポートにより、これらのソリューションの両方が同時に適用されることを願っています。つまり、公開された WSDL の生成方法を制御し、詳細なレベルでセキュリティ ポリシーを適用できます。

PS: ソース ビューで直接編集してセキュリティ ポリシーを適用すると、UI にはまだUnsecuredが表示されます。組み込みのセキュリティ ポリシーが Web UI を介して適用されるか、ポリシー名が組み込みのポリシーの 1 つに一致する場合にのみ、Securedが表示されます。

于 2012-04-19T21:18:30.097 に答える