WCF服务,Windows身份验证

Kas*_*sma 2 c# security wcf web-services windows-authentication

我们编写了一个部署在IIS上的WCF服务.我们选择了集成Windows身份验证 在这种情况下不能使用服务,但如果我们可以将IIS虚拟目录的身份验证方法设置为WCF服务的"匿名",则错误将消失.但我们的WCF服务不接受"匿名".我们必须使用集成Windows身份验证来验证客户端.任何人都知道如何解决这个问题?

提前致谢,

阿希什

小智 5

你必须做一些事情:

  • 取消选中Virtual forlder的匿名访问,然后选中Integrated windows security.
  • 创建以下绑定配置:

      <basicHttpBinding>
     <binding name="Binding1">
        <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows"  />
        </security>
     </binding>
     </basicHttpBinding>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将以上配置应用于您的服务和mex:

       <endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService">
    </endpoint>
    
    
       <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange">
    </endpoint>
    
    Run Code Online (Sandbox Code Playgroud)
    • 创建客户端并使用NetworkCredential传递凭据:

             ServiceReference.MyClient proxy = new ServiceReference.MyClient();
             proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd");
             proxy.YourServiceOperation();
      
      Run Code Online (Sandbox Code Playgroud)

还有其他方法可以单独设置用户名和密码,但它在.Net 4.0中不起作用.USERACCOUNT是您的WCF主机加入的域帐户或LDAP.如果服务器未加入域,则通过运行"lusrmgr.msc"在本地创建帐户