我们编写了一个WCF服务,部署在IIS上。我们选择了集成Windows认证。服务无法在这种情况下使用,但是如果我们可以将IIS虚拟目录的身份验证方法设置为WCF服务的“匿名”,那么错误将消失。但是“匿名”对于我们的WCF服务是不可接受的。我们必须使用集成Windows身份验证来验证客户端。任何人都知道如何解决这个问题?WCF服务,Windows身份验证
由于提前,
阿希什
我们编写了一个WCF服务,部署在IIS上。我们选择了集成Windows认证。服务无法在这种情况下使用,但是如果我们可以将IIS虚拟目录的身份验证方法设置为WCF服务的“匿名”,那么错误将消失。但是“匿名”对于我们的WCF服务是不可接受的。我们必须使用集成Windows身份验证来验证客户端。任何人都知道如何解决这个问题?WCF服务,Windows身份验证
由于提前,
阿希什
还有,你需要注意两两件事:
它可能是第二个给你带来问题的东西。 IIS日志应该包含哪个用户正在进行呼叫。
其实,如果我允许集成Windows身份验证,没有匿名,然后客户端窗口应用程序无法访问服务本身,即使在服务器上,如果我浏览服务,它会告诉我以下错误 “此服务的安全设置需要'匿名'身份验证但它不支持承载此服务的IIS应用程序。“ – Kasma 2009-09-03 13:18:07
你要做的几件事情:
创建以下绑定配置:
<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