【问题标题】:Unauthorized with client authentication scheme NTLM未经授权使用客户端身份验证方案 NTLM
【发布时间】:2012-09-24 22:22:11
【问题描述】:

我从调用 WCF 服务的 ASPX 页面收到以下错误。

HTTP 请求未经客户端身份验证方案“Ntlm”授权。从服务器收到的身份验证标头是“NTLM”。

我处于负载平衡的 Web 服务器环境中,只有当客户端 ASPX 页面在 同一个服务器。

例如:
服务器 A 上的 ASPX 页面 -> 服务器 B 上的 WCF 服务 = 没有问题。
服务器 B 上的 ASPX 页面 -> 服务器 C 上的 WCF 服务 = 没有问题。
服务器 B 上的 ASPX 页面 -> 服务器 B 上的 WCF 服务 = 上面的错误。

服务器是 IIS 7.5,WCF 服务当前配置为匿名和作为网络服务帐户运行的 Windows 身份验证。

这与环回保护有什么关系吗?我目前无法在应用程序和服务托管在同一台机器上的单一服务器环境中复制这些结果。

这是我对 ASPX 页面和服务的绑定:

客户:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_Imyservice">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://loadbalancedserver/myservice/myservice.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Imyservice"
        contract="myservice.Imyservice" name="BasicHttpBinding_Imyservice" />
    </client>
  </system.serviceModel>

WCF 服务:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpEndpointBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="myservice.Service.myservice">
        <endpoint address="" bindingNamespace="http://services.company.net/myservice"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpointBinding"
          contract="myservice.Imyservice" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>  

【问题讨论】:

    标签: c# wcf web-services windows-server-2008


    【解决方案1】:

    如果有人遇到这种情况,由于 IIS 环回问题。来自http://support.microsoft.com/kb/896861 的注册表修复成功了。

    【讨论】:

    • 我有一个针对 https API 运行的 Windows 服务,并且收到相同的消息“未使用方案 ntlm 授权......仅允许方案 ntlm”并通过应用我认为的 DisableLoopBackCheck 注册表修复程序来修复它曾经链接到那里,但现在链接到这里。 social.technet.microsoft.com/wiki/contents/articles/…
    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多