Я пишу .NET-клиент (WCF), который будет использовать веб-сервис, реализованный с использованием Apache CXF (Java), и, что удивительно, невероятно сложно установить WCF для атрибута Type тег Password для PasswordText .Т.е. я хотел бы, чтобы заголовок SOAP выглядел примерно так:
<wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-11" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>test</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">a287645857cfaaddf82e2d333651b3e0</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">oKGlwEkbkhYJH6upsbiqeQ==</wsse:Nonce>
<wsu:Created>2011-10-25T13:10:11.958Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
, но фактический заголовок выглядит так:
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken u:Id="uuid-5acb0b47-1b52-4535-bfaf-b9e76621b7eb-1">
<o:Username>test</o:Username>
<o:Password>a287645857cfaaddf82e2d333651b3e0</o:Password>
</o:UsernameToken>
</o:Security>
Как вы видите, атрибут Type отсутствует в теге Password,Некоторые исследования в Интернете показывают, что мне, возможно, придется написать перехватчик, чтобы это исправить.Я подумал, что было простое решение, то есть настройка конфигурации, чтобы исправить это, но, возможно, нет.В любом случае, я надеюсь получить некоторые разъяснения, опубликовав этот вопрос.
Сервер WS отклоняет запрос из-за отсутствия атрибута Type.Некоторая проверка функций для спецификации BSP.соответствие (не уверен, что это такое) вызывает исключение.
С уважением, Ола