Еще одна проблема MessageSecurityException

Поэтому я создал сервис, который использует базовое Auth Soap 1.2. Конфиг ниже:

<customBinding>
    <binding name="MyHttpBinding">
      <security authenticationMode="UserNameOverTransport" securityHeaderLayout="Strict"
        allowInsecureTransport="false">
        <secureConversationBootstrap />
      </security>
      <textMessageEncoding messageVersion="Soap12" />
      <httpsTransport maxReceivedMessageSize="6553600" authenticationScheme="Basic" maxBufferSize="6553600" />
    </binding>
  </customBinding>

У меня есть несколько клиентов, вызывающих его (WCF и Java). С клиентом WCF у меня нет никаких проблем, но с клиентом Java я получаю следующее исключение на стороне сервера:

System.ServiceModel.Security.MessageSecurityException Обработчику безопасности не удалось найти заголовок безопасности в сообщении. Это может быть связано с тем, что сообщение является незащищенной ошибкой или из-за несоответствия между связывающими сторонами. Это может произойти, если служба настроена для безопасности, а клиент не использует безопасность.

То, что я не знаю, как обойти эту проблему. Система должна использовать базовую аутентификацию и должна использовать Soap 1.2(таким образом, пользовательскую привязку). У меня нет контроля над вызывающим Java-клиентом, но я уверен, что он вызывает службу, используя базовую аутентификацию.

Какие-либо предложения?

2 ответа

Я не эксперт по Java, но, насколько мне известно, клиенты Java не могут реализовать SOAP 1.2 на лету. Клиентам Java необходимы внешние библиотеки для дополнения необходимых заголовков политики / безопасности в сообщении SOAP 1.2.

Я дал указание своим клиентам Java использовать библиотеки Metro для использования моей службы WCF. (Я использую такую ​​же привязку, как и у вас.) Вот блог, как включить библиотеки Metro.

Вот ссылка MSDN для взаимодействия.

Надеюсь это поможет!

Вам нужно настроить клиент java для отправки токена имени пользователя на сервер. включите Fiddler и сравните рабочее мыло (wcf клиент) с нерабочим (java)

Другие вопросы по тегам