WCF服务,Windows身份验证(WCF Service, Windows Authenticat

2019-07-04 09:33发布

我们写了一个WCF服务,在IIS上部署。 我们选择了集成Windows身份验证。 服务不能在这种情况下使用,但如果我们可以设置IIS虚拟目录的验证方法为“无名氏”的WCF服务,那么错误就会消失。 但是,“无名氏”是不是我们的WCF服务可以接受的。 我们必须使用集成Windows身份验证来验证客户端。 任何一个知道如何解决这个问题?

提前致谢,

阿希什

Answer 1:

你要做的几件事情:

  • 取消选中从您的虚拟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”创建帐户



Answer 2:

有迹象表明,你需要注意两两件事:

  1. 是您的配​​置一致:IIS,web.config中(System.Web程序和WCF)
  2. 是您的客户端发送Windows身份验证信息与请求

这可能是给你问题的第二位。 在IIS日志中应包含哪些用户正在通话。



文章来源: WCF Service, Windows Authentication