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