При использовании WCF и C # в проекте я получаю исключение MesssageSecurityException с сообщением «Заголовок безопасности пуст».Далее следует ответ (согласно MS Service Trace Viewer):
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"></wsse:Security>
<wsa:Action>_WHAT_I_DID_</wsa:Action>
<wsa:RelatesTo>_MSG_ID_OF_REQUEST_</wsa:RelatesTo>
</soapenv:Header>
<soapenv:Body>
_CORRECT_BODY_
</soapenv:Body>
</soapenv:Envelope>
Действительно, заголовок безопасности «пустой», но, насколько я могу судить, он все еще корректен в соответствии с определением заголовка безопасности.
Я также пытался редактировать привязки, но это, похоже, тоже не помогает.Я также обнаружил аналогичную проблему, когда включение EnableUnsecuredResponse
может помочь, но это не так.
Вот ответ в соответствии с SoapUI:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
<wsa:Action>_WHAT_I_DID_</wsa:Action>
<wsa:RelatesTo>_REQ_MSG_ID_</wsa:RelatesTo>
</soapenv:Header>
<soapenv:Body>
_CORRECT_BODY_
</soapenv:Body>
</soapenv:Envelope>
Они почти идентичны, за исключениемза то, как они закрывают заголовок безопасности.Что интересно, но не должно вызывать исключение?
Я также обнаружил аналогичную проблему , где было решено создать собственный кодировщик сообщений и убрать весь заголовок безопасности, хотя это сработало быэто лишний ненужный шаг.Это единственный способ сделать это с .Net и WCF?Разве WCF не может обрабатывать заголовки безопасности без содержимого?
РЕДАКТИРОВАТЬ: Разъяснение проблемы, запись кодировщика, который удаляет заголовок безопасности, единственный способ получать и анализировать SOAP-сообщения с пустыми заголовками безопасности с использованием WCF?1018 *
EDIT2: Добавление части conf:
<binding name="NinjaBinding">
<security allowSerializedSigningTokenOnReply="true" enableUnsecuredResponse="true"
authenticationMode="UserNameOverTransport" requireDerivedKeys="false"
securityHeaderLayout="Lax" includeTimestamp="false" allowInsecureTransport="true"
keyEntropyMode="ClientEntropy"
messageProtectionOrder="SignBeforeEncryptAndEncryptSignature"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
requireSecurityContextCancellation="false">
<localServiceSettings detectReplays="false" />
<secureConversationBootstrap _IDENTICAL_TO_ABOVE_
</secureConversationBootstrap>
</security>
<textMessageEncoding />
<httpsTransport />
</binding>
Насколько я знаю, его настроить, чтобы разрешить практически все?