【问题标题】:Difference between ClientCredentialType=Windows and =NtlmClientCredentialType=Windows 和 =Ntlm 之间的区别
【发布时间】:2009-04-17 21:15:26
【问题描述】:

谁能给清楚的解释一下使用的区别

  • clientCredentialType=Windows, 和
  • clientCredentialType=Ntlm

在托管 WCF 服务时在服务器端 Web.config 中?

我有一个用于与现有客户端互操作的 SOAP 1.1 (basicHttpBinding) 服务。它使用 ASP.NET 角色,因此需要对客户端进行身份验证。

当我使用VS2005(Cassini)服务器托管服务时,我必须如上指定ClientCredentialType=Ntlm,并在VS2005的项目属性中勾选Ntlm认证框。 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 客户端一起使用。

【问题讨论】:

    标签: wcf visual-studio-2005 cassini


    【解决方案1】:

    clientCredentialType=Windows 使用内置的 Windows 身份验证,可以通过 Active Directory 和 NTLM。

    显然 NTLM 类型只会使用 NTLM 进行身份验证。

    我相信您已经看过了,但这里是 WCF 安全性的链接: http://msdn2.microsoft.com/en-us/library/ms734769.aspx

    有关您的设置的更多详细信息会有所帮助。 IIS 和 Cassini 服务器是否在同一个机器上运行?如果没有,您是否在每个盒子上设置了相同的帐户? IIS6 默认支持 NTLM,所以让它工作应该没有问题。

    【讨论】:

    • 谢谢。我已经阅读过,并且对 NTLM 和 Windows 之间的区别有一个肤浅的认识。但这不是为什么 Windows 不能与 Cassini 一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多