2011-05-10 61 views
1

我有一个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身份验证头是

域:

用户:[email protected]

主持人: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" />   

+0

你能显示WCF服务的服务器配置。 – 2011-05-10 01:28:03

+0

虽然我接受我可能不得不使用配置来解决这个问题,但我试图使用“零配置体验”。为了以防万一,我已将它添加到问题中。 – user381624 2011-05-10 01:54:57

回答

0

看看认证博客系列亚历克斯在这里写:http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

它描述了不同的身份验证方案,以及他们如何做人。其中之一就是上面的内容(它也描述了客户为什么要提出两个请求,以及如何解决这个问题)。

希望这有助于

莫妮卡Frintu

+0

感谢您的链接。问题是,它声明以下内容,但在我的情况下,用户有权访问服务器,但只有第二个选项有效: 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