11

任何人都可以清楚地解释使用之间的区别

  • clientCredentialType=Windows, 和
  • clientCredentialType=Ntlm

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

我有一个basicHttpBinding用于与现有客户端互操作的 SOAP 1.1 ( ) 服务。它使用 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-break -change-to-wcf.aspx http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236

当服务器在域帐户下运行(这是我使用 Cassini 的情况 - 作为我的普通域用户帐户运行)时,情况听起来类似于clientCredentialType=Windows失败,并且在本地帐户下运行时工作(这是我使用 IIS 的情况)。

问题是建议的修复需要更改 WCF 客户端配置文件 - 但在我的情况下,我将 SOAP 1.1 ( basicHttpBinding) 与非 WCF 客户端一起使用。

4

1 回答 1

4

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

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

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

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

于 2009-04-17T22:00:25.437 回答