C# WCF服务,Windows身份验证
我们编写了一个WCF服务,部署在IIS上。我们选择了集成Windows身份验证。在这种情况下不能使用服务,但如果我们可以为WCF服务将IIS虚拟目录的身份验证方法设置为“匿名”,则错误将消失。但我们的WCF服务不接受“匿名”。我们必须使用集成的Windows身份验证来验证客户端。有人知道如何解决这个问题吗 提前感谢,C# WCF服务,Windows身份验证,c#,wcf,web-services,security,windows-authentication,C#,Wcf,Web Services,Security,Windows Authentication,我们编写了一个WCF服务,部署在IIS上。我们选择了集成Windows身份验证。在这种情况下不能使用服务,但如果我们可以为WCF服务将IIS虚拟目录的身份验证方法设置为“匿名”,则错误将消失。但我们的WCF服务不接受“匿名”。我们必须使用集成的Windows身份验证来验证客户端。有人知道如何解决这个问题吗 提前感谢, Ashish有两件事需要注意: 配置是否对齐:IIS、web.config(system.web和WCF) 您的客户端是否正在随请求发送windows身份验证信息 这可能是第二个给
Ashish有两件事需要注意:
这可能是第二个给你带来问题的原因。IIS日志应包含进行调用的用户 你必须做几件事:
- 取消选中虚拟文件夹中的匿名访问,并检查集成的windows安全性
- 创建以下绑定配置:
<basicHttpBinding> <binding name="Binding1"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding>
如果服务器未加入域,则通过运行“lusrmgr.msc”在本地创建一个帐户。能否显示显示客户端和wcf服务配置的配置文件?实际上,如果我允许集成Windows身份验证,而不使用匿名,则客户端窗口应用程序无法访问服务本身,即使在服务器上,如果我浏览服务,也会显示以下错误“此服务的安全设置需要“匿名”身份验证,但未为承载此服务的IIS应用程序启用此安全设置。”
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService">
</endpoint>
<endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange">
</endpoint>
ServiceReference.MyClient proxy = new ServiceReference.MyClient();
proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd");
proxy.YourServiceOperation();