WCF数据服务的Windows身份验证问题
我有一个WCF数据服务,并在web.config我已经使用WCF数据服务的Windows身份验证问题
<authentication mode="Windows" />
我试图避免任何绑定配置,所以在这一点上没有用过。
我正在从WPF应用程序访问服务。
IIS仅配置为“Windows身份验证”。
当我访问该服务,我设置凭据
_proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
但我得到一个错误“401 - 未经授权:访问由于凭据无效被拒绝。”
如果我将其更改为以下,服务工作正常:
_proxy.Credentials = new NetworkCredential("username", "$password", "Domain");
当小提琴手跟踪这一点,我注意到,当我使用DefaultNetworkCredentials的NTLM身份验证头是
域:
主持人:PC-59
当使用成功的新的NetworkCredential( “用户名”, “$密码”, “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" />
看看认证博客系列亚历克斯在这里写:http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/
它描述了不同的身份验证方案,以及他们如何做人。其中之一就是上面的内容(它也描述了客户为什么要提出两个请求,以及如何解决这个问题)。
希望这有助于
莫妮卡Frintu
感谢您的链接。问题是,它声明以下内容,但在我的情况下,用户有权访问服务器,但只有第二个选项有效: MyDataContext ctx = new MyDataContext(uri); ctx.Credentials = System.Net.CredentialCache.DefaultCredentials; 如果您的客户端应用程序在可访问服务器的Windows帐户下运行,则上述示例是有意义的。如果不是,您将不得不创建一组新的NetworkCredentials并使用它们。 ctx.Credentials = new NetworkCredential( “username”, “password”, “domain”); – user381624 2011-05-10 23:38:45
你能显示WCF服务的服务器配置。 – 2011-05-10 01:28:03
虽然我接受我可能不得不使用配置来解决这个问题,但我试图使用“零配置体验”。为了以防万一,我已将它添加到问题中。 – user381624 2011-05-10 01:54:57