在主机上配置的身份验证方案('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')上配置的身份验证方案。的主要内容,如果未能解决你的问题,请参考以下文章

客户端身份验证方案“匿名”禁止 HTTP 请求

客户端身份验证方案“匿名”禁止 HTTP 请求

收到 403 禁止错误。客户端身份验证方案“匿名”禁止 HTTP 请求

WCF-TransportWithMessageCredential HTTP 请求未经授权,客户端身份验证方案“匿名”

客户端身份验证方案“匿名”的 HTTP 请求未经授权?

重现问题:客户端身份验证方案“匿名”禁止 http 请求