C# 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身份验证信息 这可能是第二个给

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

提前感谢,


Ashish

有两件事需要注意:

  • 配置是否对齐:IIS、web.config(system.web和WCF)
  • 您的客户端是否正在随请求发送windows身份验证信息

  • 这可能是第二个给你带来问题的原因。IIS日志应包含进行调用的用户

    你必须做几件事:

    • 取消选中虚拟文件夹中的匿名访问,并检查集成的windows安全性
    • 创建以下绑定配置:

        <basicHttpBinding>
       <binding name="Binding1">
          <security mode="TransportCredentialOnly">
              <transport clientCredentialType="Windows"  />
          </security>
       </binding>
       </basicHttpBinding>
      
    还有其他方法可以单独设置用户名和密码,但在.Net 4.0中不起作用。 USERACCOUNT是WCF主机加入到的域帐户或LDAP。
    如果服务器未加入域,则通过运行“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();