我正在使用 Windows 身份验证和 ASP.NET 模拟通过 IIS7 对 WCF 服务的用户进行身份验证。
在本地调试时,我可以看到 System.Security.Principal.WindowsIdentity.GetCurrent().Name 等于我的 Windows 凭据。当我将此服务部署到服务器时,除非启用匿名身份验证,否则 WCF 无法运行。
那么,我们如何让这个 WCF 服务在禁用匿名身份验证的服务器上运行呢?
更新 1:尝试两个建议后的错误消息:
主机上配置的身份验证方案(“IntegratedWindowsAuthentication”)不允许在绑定“WebHttpBinding”(“匿名”)上配置的身份验证方案。请确保将 SecurityMode 设置为 Transport 或 TransportCredentialOnly。此外,可以通过 IIS 管理工具、通过 ServiceHost.Authentication.AuthenticationSchemes 属性、在元素的应用程序配置文件中更改此应用程序的身份验证方案、通过更新绑定上的 ClientCredentialType 属性或通过调整来解决此问题HttpTransportBindingElement 上的 AuthenticationScheme 属性。
更新 2:身份验证已按以下方式设置:
应用程序池:
- 身份 = 网络服务
网站:
- 匿名身份验证 = 禁用
- ASP.NET 身份验证 = 已启用
- Windows 身份验证 = 已启用
WCF 应用程序:
- 匿名身份验证 = 禁用
- ASP.NET 身份验证 = 已启用
- Windows 身份验证 = 已启用