繁体   English   中英

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

[英]The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM’

我有一个用VB.NET编写的ASP.NET Web应用程序。 应用程序的一部分对内部ASMX文件进行AJAX调用,后者又调用远程Web服务,该服务只是一个ASMX文件。 通常这工作正常,并已部署了几次,工作正常。 但是,一个客户端从AJAX调用获取消息:

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

我已经搜索了大量试图解决此问题的网站,但我似乎无法找到适合我的任何答案。

我无法在我的测试服务器上复制错误,这与客户端Win2003 IIS6相同。

远程Web服务部署在Windows 2008 r2 - IIS7.5上。 仅使用“匿名”身份验证部署远程服务。 客户端部署使用Anonymous和“集成Windows身份验证”进行设置。 我尝试在两个实现上更改身份验证级别,但无法复制该问题。 我最接近的是当我将远程服务IIS身份验证设置为

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

在web.config文件中,对远程服务的引用是:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="SVCMappingSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://svc.website.com/services/myService.asmx" binding="basicHttpBinding" bindingConfiguration="SVCMappingSoap" contract="SVCMappingService.SVCMappingSoap" name="SVCMappingSoap"/>
    </client>
</system.serviceModel>

我尝试更改<security>部分中的一些设置但仍无法复制。

我不确定您的服务器总设置。

<security mode="None">
  <transport clientCredentialType="None" proxyCredentialType="None"    realm=""/>
</security>

请使用以下配置尝试而不是上面一个

<security mode="TransportCredentialOnly">
    <transport clientCredentialType="Ntlm"/>
    <message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>

请通过以下链接,您可以更多地了解这些,您可以根据您的要求更改配置:

我不得不改变生成的默认值

      <security mode="Transport"/>

      <security mode="Transport" >
        <transport clientCredentialType="Ntlm"/>
      </security>

还有一个关于这个问题的评论:

如果您不使用HTTPS,

<security mode="Transport"/>

不受支持。 您可以使用

<security mode="TransportCredentialOnly">

代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM