2

WSDL ファイルに次のポリシーがあります。

<wsp:Policy wsu:Id="UsernameToken" 
   xmlns:wsp="http://www.w3.org/ns/ws-policy" 
   xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
   xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
   >
   <wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/>
   <sp:SymmetricBinding>
       <wsp:Policy>
           <sp:ProtectionToken>
               <wsp:Policy>
                   <sp:SecureConversationToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient" />
               </wsp:Policy>
           </sp:ProtectionToken>
       </wsp:Policy>
   </sp:SymmetricBinding>
</wsp:Policy>

そして、私はそれをバインディングに含めました:

    <wsp:PolicyReference xmlns:wsp="http://www.w3.org/ns/ws-policy" URI="#UsernameToken"/>

私のハンドラーで私が行う場合を除いて、WSDLを通過するようです:

        List<?> securityList = soapEnvelope.getSecurity(null, true);

        if ((securityList == null) || (securityList.size() == 0))
        {
            securityList = soapEnvelope.getSecurity();
        }

nullを返します。ここでの soapEnvelop は次のとおりです。WSSOAPEnvelope soapEnvelope であり、null ではありません。

大変お世話になりました!しばらくの間、これに苦労しています。

セキュリティ ヘッダーがエンベロープから切り取られているような気がします。

また、WSDL ファイルからポリシー定義を削除すると、なしで渡さsoap:mustUnderstand="1"れます。この属性を含めると、エラー メッセージが表示されます。

MustUnderstand headers:[{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security] are not understood
4

0 に答える 0