【问题标题】: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 属性。

【问题讨论】:

    标签: wcf wcf-security basichttpbinding transport-security


    【解决方案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>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-02-21
                  • 2014-10-26
                  • 2016-02-03
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-07-29
                  • 1970-01-01
                  • 2018-09-09
                  相关资源
                  最近更新 更多