Как заставить SoapUI работать с режимом ws-security «TransportWithMessageCredential»

Я пытаюсь создать пример запроса в SoapUI, но я не уверен, как заставить его работать.

Это рабочий пример на С#:

            var myService = new MyServiceClient("WSHttpBinding_MyService");

            myService .ClientCredentials.UserName.UserName = "User";
            myService .ClientCredentials.UserName.Password = "Password";

            var response = myService.MyMethod("parameter1");

Конфигурация:

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_IMyService">
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="None" />
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://myWebsite.com:8000/MyService.svc"
          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyService"
          contract="MyService.IMyService" name="WSHttpBinding_IMyService" />
    </client>
  </system.serviceModel>

Кажется, что это не должно быть так сложно заставить это работать в SoapUI, но я продолжаю получать всевозможные ошибки.

У кого-нибудь есть рабочий пример для этого?


person Jan V    schedule 15.05.2019    source источник


Ответы (2)


Дважды щелкните информацию о конечной точке, чтобы перейти к свойствам конечной точки клиента, добавьте учетные данные имени пользователя и пароля и измените тип WSS на PasswordText. Как показано ниже.
введите описание изображения здесь
Кроме того, из-за безопасности транспортного уровня мы должны установить сертификат сервера в доверенный корневой центр сертификации, когда клиент вызывает его .
Не стесняйтесь, дайте мне знать, если я могу чем-то помочь.

person Abraham Qian    schedule 15.05.2019
comment
Я пробовал это, но я продолжаю получать следующую ошибку: Сообщение не может быть обработано. Скорее всего, это связано с тем, что действие 'tempuri.org/MyService/GetRequestStatus' неверно, или сообщение содержит недействительный или просроченный токен контекста безопасности или из-за несоответствия между привязками... Я не устанавливал сертификат сервера, всегда ли он требуется для SoapUI? - person Jan V; 15.05.2019
comment
Кажется, что soapUI не поддерживает этот тип безопасности wshttpbinding. поэтому он автоматически генерирует конечную точку basichttpbinding. с моей стороны это работает, когда я использую basichttpbinding для публикации службы. после поиска некоторой информации в Интернете я все еще не могу заставить ее работать. попробуйте обратиться к следующей ссылке. режим транспорта с сообщениями"> stackoverflow.com/questions/13729270/ - person Abraham Qian; 16.05.2019

Решил это, отключив «installSecurityContext» в конфигурации wcf. После этого SoapUI может совершить вызов.

Конфигурация:

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_IMyService">
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="None" />
            <message clientCredentialType="UserName" negotiateServiceCredential="true"
                establishSecurityContext="false" algorithmSuite="Default" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://myWebsite.com:8000/MyService.svc"
          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyService"
          contract="MyService.IMyService" name="WSHttpBinding_IMyService" />
    </client>
  </system.serviceModel>

И установите флажок wsa:To в SoapUI, чтобы он заработал:

введите здесь описание изображения

person Jan V    schedule 21.05.2019