我有一个WCF数据服务,在web.config中我使用了
<authentication mode="Windows" />
我正在尝试避免任何绑定配置,所以此时使用了none。
我正在从WPF应用程序访问该服务。
IIS仅配置为“Windows身份验证”。
当我访问该服务时,我设置了凭据
_proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
但是我收到错误“401 - 未经授权:由于凭据无效而拒绝访问。”
如果我将其更改为以下内容,则服务正常运行:
_proxy.Credentials = new NetworkCredential("username", "$password", "Domain");
在Fiddler中跟踪时,我注意到当我使用DefaultNetworkCredentials时,NTLM Auth标头是
域名:
用户:username@Domain.com
主持人:PC-59
使用成功的新NetworkCredential(“用户名”,“$ password”,“MyDomain”)时,Auth标头
域名:MyDomain
用户:用户名
主持人:PC-59
PS。为了记录,这是我的服务配置:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
答案 0 :(得分:0)
看看Alex在这里写的认证博客系列:http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/
它描述了不同的身份验证方案及其行为方式。其中一个是上面的(它还描述了客户端发出两个请求的原因以及如果你想要如何克服它)。
希望这有帮助,
Monica Frintu