> clientCredentialType = Windows,和
> clientCredentialType = Ntlm
托管WCF服务时在服务器端Web.config中?
我有一个SOAP 1.1(basicHttpBinding)服务,用于与现有客户端互操作.它使用ASP.NET角色,因此需要对客户端进行身份验证.
当我使用VS2005(Cassini)服务器来托管服务时,我必须如上所述指定ClientCredentialType = Ntlm,并检查VS2005中项目属性中的Ntlm身份验证框. ClientCredentialType = Windows不起作用 – 客户端获得:
401 Unauthorized error
但是,当我在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客户端.
显然,NTLM类型将仅使用NTLM进行身份验证.
我相信你已经看过了,但这里是WCF安全性的链接:
http://msdn2.microsoft.com/en-us/library/ms734769.aspx
有关您的设置的更多详细信息将有所帮助IIS和Cassini服务器是否在同一个盒子上运行?如果没有,你在每个盒子上设置相同的帐户?默认情况下IIS6支持NTLM,因此您应该没有问题让它工作.