Как заставить SoapUI работать в режиме ws-security 'TransportWithMessageCredential' - PullRequest
0 голосов
/ 15 мая 2019

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

Это рабочий пример в C #:

            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, но я продолжаю получать всевозможные ошибки.

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

Ответы [ 2 ]

1 голос
/ 21 мая 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, чтобы он заработал:

enter image description here

1 голос
/ 15 мая 2019

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

...