Может ли кто-нибудь дать четкое объяснение разницы между использованием
clientCredentialType=Windows
и
clientCredentialType=Ntlm
в серверном Web.config при размещении службы WCF?
У меня есть сервис SOAP 1.1 (basicHttpBinding
) для взаимодействия с существующими клиентами. Он использует роли ASP.NET, поэтому требует проверки подлинности клиентов.
Когда я использую сервер VS2005 (Cassini) для размещения службы, я должен указать ClientCredentialType=Ntlm
, как указано выше, и установить флажок Ntlm в свойствах проекта в VS2005. ClientCredentialType=Windows
не работает - клиенты получают:
401 Несанкционированная ошибка
Однако, когда я работаю под IIS, все наоборот: ClientCredentialType=Windows
работает, а ClientCredentialType=Ntlm
дает сбой.
Может кто-нибудь объяснить это и, предпочтительно, предложить способ, которым у меня может быть один и тот же файл web.config для запуска службы в Cassini и IIS?
Обновление
У меня на компьютере разработчика установлен .NET 3.5 SP1, на котором работает XP SP2 в домене. Поэтому Cassini работает под учетной записью домена, а IIS 5.1 - под локальной учетной записью.
Интересно, может ли это быть связано с критическими изменениями в .NET 3.5SP1, описанными в этих статьях.
http://www.aspnetpro.com/newsletterarticle/2008/12/asp200812ab_l/asp200812ab_l.asp
http://msmvps.com/blogs/alvin/archive/2008/11/14/net-3-5-sp1-breaking-change-to-wcf.aspx
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236
Ситуация похожа на clientCredentialType=Windows
, когда сервер работает под учетной записью домена (что является моей ситуацией с Cassini - моей обычной учетной записью пользователя домена), и работает при запуске под локальной учетной записью (которая является моей ситуация с IIS).
Проблема в том, что предлагаемые исправления требуют изменений в файле конфигурации клиента WCF, но в моем случае я использую SOAP 1.1 (basicHttpBinding
) с клиентами, не являющимися WCF.