.NET WCF вызывает .asmx с WS-Security - PullRequest
0 голосов
/ 27 октября 2009

Может ли клиентская программа .NET WCF вызвать существующую (поставляемую поставщиком) веб-службу .asmx, которая использует WS-Security для входа?

В нашем случае поставщик предоставил веб-сервис .asmx с WS-Security. Мы попытаемся сначала использовать SOAPUI и WCFTestHarness или WCFTestClient для доступа к ним. Предпочел бы использовать WCF, если это возможно.

Спасибо

Нил Уолтерс

1 Ответ

3 голосов
/ 27 октября 2009

Да, абсолютно. WCF прекрасно поддерживает WS-Security. Какие токены ожидаются сервисом для аутентификации?

Предполагая, что это просто имя пользователя / пароль, вы просто настроили бы привязку для использования защиты TransportWithMessageCredential, где тип учетных данных клиента - UserName (примечание: для этого вы должны использовать HTTPS). Сначала определите привязку следующим образом:

<basicHttpBinding>
    <binding name=“MyBinding”>
        <security mode=“TransportWithMessageCredential”>
            <transport clientCredentialType=“None” />
            <message clientCredentialType=“UserName” />
        </security>
    </binding>
</basicHttpBinding>

Затем настройте конечную точку для использования этой привязки:

<endpoint address="https://somewhere.com/TargetService.asmx" binding="basicHttpBinding" bindingConfiguration="MyBinding" />

Затем во время выполнения, предполагая, что вы используете сгенерированный прокси (т.е. ClientBase), вы просто устанавливаете учетные данные клиента следующим образом:

TargetServiceClient client = new TargetServiceClient();
client.Credentials.UserName.UserName = "myusername";
client.Credentials.UserName.Password = "mypassword";
...