WCF服务,Windows身份验证
我们编写了一个WCF服务,部署在IIS上。我们选择了集成Windows认证。服务无法在这种情况下使用,但是如果我们可以将IIS虚拟目录的身份验证方法设置为WCF服务的“匿名”,那么错误将消失。但是“匿名”对于我们的WCF服务是不可接受的。我们必须使用集成Windows身份验证来验证客户端。任何人都知道如何解决这个问题?WCF服务,Windows身份验证
由于提前,
阿希什
还有,你需要注意两两件事:
- 是您的配置一致:IIS,web.config中(的System.Web和WCF)
- 您的客户是否发送Windows请求认证信息
它可能是第二个给你带来问题的东西。 IIS日志应该包含哪个用户正在进行呼叫。
其实,如果我允许集成Windows身份验证,没有匿名,然后客户端窗口应用程序无法访问服务本身,即使在服务器上,如果我浏览服务,它会告诉我以下错误 “此服务的安全设置需要'匿名'身份验证但它不支持承载此服务的IIS应用程序。“ – Kasma 2009-09-03 13:18:07
你要做的几件事情:
- 取消选中匿名访问从您的虚拟forlder和检查集成的Windows安全性。
-
创建以下绑定配置:
<basicHttpBinding> <binding name="Binding1"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding>
-
应用上面的配置为你服务和MEX:
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService"> </endpoint> <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange"> </endpoint>
-
创建一个客户端和使用的NetworkCredential来传递您的凭据:
ServiceReference.MyClient proxy = new ServiceReference.MyClient(); proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd"); proxy.YourServiceOperation();
-
还有其他的方法来设置用户名密码& indivdually但它并没有在.NET 4.0中工作。 USERACCOUNT是WCF主机加入的域帐户或LDAP。 如果服务器未加入域,则通过运行“lusrmgr.msc”在本地创建一个帐户
你能显示什么配置文件显示客户端和wcf服务的配置吗? – CSharpAtl 2009-09-02 13:48:48