Веб-сервисы + вопросы аутентификации Windows - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть веб-проект, который использовал проверку подлинности с помощью форм.У меня есть новые требования для поддержки аутентификации Windows.Этот проект содержит две веб-службы, одну для страницы Silverlight (MapService) и одну для различных вызовов ajax (AsyncService). Теперь все работает, но есть две вещи, которые я не совсем понимаю.

Конфигурация изWeb.Config выглядит следующим образом:

<bindings>
      <basicHttpBinding>
        <binding name="WindowsClientOverTcp">
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding name="AsyncWindowsOverTcp">
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="Project.MapService.MapService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="WindowsClientOverTcp" name="WindowsClientOverTcp" contract="Project.MapService.MapService" />
      </service>
      <service name="Project.AsyncService.AsyncService">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="AsyncWindowsOverTcp" name="AsyncWindowsOverTcp" behaviorConfiguration="Project.AsyncService.AsyncServiceAspNetAjaxBehavior" contract="Project.AsyncService.AsyncService" />
      </service>
  </services>
  1. При такой установке требуется ли в основном использование SSL?Я читал, что при использовании Transport Security с Windows ClientCredentialType форсируется конечная точка HTTPS, что, по-видимому, имеет место.Я просто хочу знать, разумно ли вообще заявить клиенту или руководству: «Если им нужна аутентификация Windows, наше приложение должно использовать https»

  2. Для AsyncService для него явно требуется Windowsучетные данные от клиента, но мне совсем не пришлось менять свой код JS / Ajax, и он все еще работает нормально.Есть ли какая-то магия в работе браузера клиента?Поскольку нет никакой конфигурации клиента, я не понимаю, как аутентифицируются вызовы.

Спасибо

1 Ответ

3 голосов
/ 07 февраля 2012
  1. Нет, вам не нужен HTTPS для использования аутентификации Windows.Вам необходимо настроить IIS для использования Integrated Security, и если вызывающий абонент находится в том же домене Windows или доверенном домене Windows, IIS сможет аутентифицировать пользователя.

  2. Еслибраузер работает с использованием учетных данных вашего домена Windows или доверенного домена, и ваше веб-приложение настроено на использование проверки подлинности Windows, затем браузер включает учетные данные, с которыми он работает в IIS.

РЕДАКТИРОВАТЬ: Некоторая дополнительная информация.Если вы используете BasicHttpBinding, как описано выше, и хотите защитить его, хорошим вариантом будет использование TransportWithMessageCredential в качестве режима безопасности.Это защищает сообщение с использованием транспортного уровня (HTTPS) и включает в сообщение учетные данные Windows.См. Также «Программирование безопасности WCF» на http://msdn.microsoft.com/en-us/library/ms731925.aspx.

...