wcf - включить аутентификацию по Windows и имени пользователя - PullRequest
1 голос
/ 02 апреля 2009

Какие важные точки конфигурации необходимы для включения сценария, при котором служба WCF может вызываться с или учетные данные Windows, зарегистрированные на пользователях или же комбинация имени пользователя и пароля.

Я почти уверен, что знаю, как их настроить, но я не знаю, как заставить принудительно использовать конечную точку имени пользователя / пароля.

Это просто вопрос использования конструктора, который позволяет вам указать конкретную конечную точку, а затем установки ClientCredentials.UserName.UserName и .Password?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2009

В конфигурации привязки для сервисов есть раздел безопасности. Там вы можете выбрать, какой режим безопасности (Нет / Транспорт / Сообщение / TransportWithMessageCredential) вы хотите использовать, а затем для каждого конкретного режима вы можете настроить параметры безопасности (такие как тип учетных данных - Имя пользователя / Windows / Сертификат и т. Д.). Затем на стороне клиента необходимо настроить привязки соответственно, где вы устанавливаете, какой тип режима безопасности вы хотите использовать и какой тип удостоверения. Вы можете настроить его одинаково либо из своего кода или с помощью файла конфигурации.

Существует очень хорошее руководство по безопасности WCF от MS Patterns & Practices. Вот ссылка: http://www.codeplex.com/WCFSecurityGuide

В нем много HoTos для определенных сценариев. Например, вот пошаговое руководство по настройке netTcpBinding с аутентификацией Windows и защитой сообщений от WinForms: http://wcfsecurityguide.codeplex.com/Wiki/View.aspx?title=How%20To%20-%20Use%20netTcpBinding%20with%20Windows%20Authentication%20and%20Message%20Security%20in%20WCF%20from%20Windows%20Forms

0 голосов
/ 22 апреля 2009

Пока ваши конечные точки клиента конфигурации существуют в конфигурации и настроены для соответствующего метода аутентификации, вы правы, это так же просто, как указать имя конфигурации в конструкторе и предоставить клиенту uname / pwd.

0 голосов
/ 02 апреля 2009

Вам просто нужно изменить привязку на конечной точке;

<wsHttpBinding>
  <binding name="WSHttpUserName">
    <security>
      <transport clientCredentialType="None" />
      <message clientCredentialType="UserName" />
    </security>
  </binding>
</wsHttpBinding>

Теперь, если вам нужна автоматическая проверка подлинности Windows, вам потребуется другая конечная точка с другой привязкой в ​​clientCredentialType для «Windows»

Или вы можете поместить его в транспорт, а не в сообщение, но в любом случае вам потребуется SSL для аутентификации имени пользователя.

...