在主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。
Posted
技术标签:
【中文标题】在主机上配置的身份验证方案(\'Anonymous\')不允许在绑定\'BasicHttpBinding\'(\'Negotiate\')上配置的身份验证方案。【英文标题】:The authentication schemes configured on the host ('Anonymous') do not allow those configured on the binding 'BasicHttpBinding' ('Negotiate').在主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。 【发布时间】:2013-12-09 05:19:59 【问题描述】:主机上配置的身份验证方案('Anonymous')不允许绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。请确保将 SecurityMode 设置为 Transport 或 TransportCredentialOnly。此外,可以通过 IIS 管理工具、通过 ServiceHost.Authentication.AuthenticationSchemes 属性、在元素的应用程序配置文件中更改此应用程序的身份验证方案、通过更新绑定上的 ClientCredentialType 属性或通过调整来解决此问题HttpTransportBindingElement 上的 AuthenticationScheme 属性。
【问题讨论】:
【参考方案1】:当您没有在本地 IIS 网络服务器中安装身份验证模式时,可能会显示此错误。转到控制面板 -> 程序 -> 打开或关闭 Windows 功能
检查 Internet 信息服务 -> 万维网服务 -> 安全 -> 并启用基本、Windows、摘要式身份验证模式。打开 IIS 并导航到您的应用程序,然后转到身份验证部分并启用所需的身份验证模式。 对我来说,身份验证模式在安装后或网络服务器重新启动后没有立即显示。重新启动机器会在 web 应用程序中显示它们。
【讨论】:
注意 - 仅在 Windows 功能打开或关闭下单独启用 Windows 身份验证 > IIS 不起作用。您需要启用 Basic、Digest 和 Windows 身份验证。【参考方案2】:如果您在 Visual Studio 中调试时遇到此问题,请选择您的项目并在属性中更改身份验证。
【讨论】:
我在使用 IIS Express 调试我的项目时遇到了类似的问题。通过属性窗口启用匿名身份验证可以解决 IIS Express 用户的问题。 请确认 csproj 中的字段,因为我发现该值与我在 VS2017 中看到的不匹配。 正是我想要的。谢谢!【参考方案3】:如有必要 - 将功能安装为described above,打开 IIS 管理器,打开服务器功能:
打开“身份验证”功能:
启用/禁用需要的:
【讨论】:
【参考方案4】:我解决了这个问题,将协商添加到 IIS 身份验证提供程序:
【讨论】:
【参考方案5】:这发生在我身上,因为该站点已为 Windows 身份验证配置了 WCF...
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
但是 IIS 禁用了 Windows 身份验证并启用了匿名身份验证。解决方法是在 IIS 中启用 Windows 身份验证。
【讨论】:
【参考方案6】:当这种情况发生在我身上时,我发现 Visual Studio 在使用“发现”按钮添加服务引用时正在使用“默认网站”来托管我的服务。所以要修复,我必须启用我的服务在 IIS 的“默认网站”上使用的身份验证。由于我使用的是 Windows 身份验证,因此为 IIS 中的“默认网站”启用它,这似乎解决了我的问题。当然,如果您的服务使用其他类型的身份验证,您将必须启用正确的身份验证。
要配置身份验证,请打开 IIS。在“站点”下,选择“默认网站”,然后选择身份验证。
【讨论】:
【参考方案7】:就我而言,问题在于重构后的服务配置错误。 如果服务中的 name 属性 没有指向现有的类,你可能会得到这个异常,这将完全误导你。
所以记住名字:
<service behaviorConfiguration="FooBehavior" name="Fully.Qualified.Name.Of.Class.Implementing.Service.Contract.Here">
【讨论】:
【参考方案8】:重启 IIS 解决了我的问题
【讨论】:
【参考方案9】:如果您尝试在 IIS 中为“基本身份验证”配置服务(即,它会提示输入用户名/密码),则应按如下方式设置安全传输设置:
对于基本HttpBinding
<security mode="Transport">
<transport clientCredentialType="Basic" />
<message clientCredentialType="UserName" />
</security>
对于 webHttpBinding
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
【讨论】:
以上是关于在主机上配置的身份验证方案('Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。的主要内容,如果未能解决你的问题,请参考以下文章
收到 403 禁止错误。客户端身份验证方案“匿名”禁止 HTTP 请求
WCF-TransportWithMessageCredential HTTP 请求未经授权,客户端身份验证方案“匿名”