【问题标题】:wcf data services windows authentication problemwcf数据服务windows认证问题
【发布时间】:2011-05-10 01:19:41
【问题描述】:

我有一个 WCF 数据服务,并且在我使用过的 web.config 中

<authentication mode="Windows" />

我试图避免任何绑定配置,所以目前没有使用任何绑定配置。

我正在从 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

使用成功的new NetworkCredential("username", "$password", "MyDomain")时,Auth header为

域:我的域

用户:用户名

主机:PC-59

附言。作为记录,这是我的服务配置:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>          
      <serviceMetadata httpGetEnabled="true" />          
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />        

【问题讨论】:

  • 能否显示 WCF 服务的服务器配置。
  • 虽然我接受我可能必须使用配置来解决这个问题,但我正在尝试使用“零配置体验”。为了以防万一,我已将其添加到问题中。

标签: wcf-data-services


【解决方案1】:

看看Alex在这里写的认证博客系列:http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

它描述了不同的身份验证方案及其行为方式。其中之一是上述内容(它还描述了客户端发出两个请求的原因以及如果您愿意如何克服它)。

希望对你有帮助,

莫妮卡·弗林图

【讨论】:

  • 感谢您的链接。问题是它说明了以下内容,但在我的情况下,用户可以访问服务器,但只有第二个选项有效: MyDataContext ctx = new MyDataContext(uri); ctx.Credentials = System.Net.CredentialCache.DefaultCredentials;如果您的客户端应用程序在有权访问服务器的 Windows 帐户下运行,则上面的示例很有意义。但是,如果不是,您将不得不创建一组新的 NetworkCredentials 并使用它们。 ctx.Credentials = new NetworkCredential("username", "password", "domain");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 2014-05-11
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
相关资源
最近更新 更多