【问题标题】:The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'Negotiate,NTLM'HTTP 请求未经客户端身份验证方案“Ntlm”授权。从服务器收到的身份验证标头是“协商,NTLM”
【发布时间】:2011-02-23 13:59:30
【问题描述】:

我有一个从我的 Web 应用程序调用的 WCF 服务。 WCF 服务调用是在 SSL 端口 443 上进行的。

当我的应用程序进行调用时,我在日志文件中收到以下错误消息: HTTP 请求未经客户端身份验证方案“Ntlm”授权。从服务器收到的身份验证标头是 'Negotiate,NTLM'

我使用 cscript 命令检查了我的机器(IIs 5.1)和部署 WCF 服务的机器(IIS 6.0)上的 iis 身份验证标头:

对于 iis 5.1 adsutil 设置 w3svc/1/ntauthenticationproviders "协商,NTLM"

同样,已使用以下命令在服务器计算机 IIS 6.0 上设置标头: adsutil 设置 w3svc/1/root/ntauthenticationproviders "协商,NTLM"

我反复检查了标头,它们在两端具有相同的“Negotiate,NTLM”值,但我的服务调用失败了。

请帮忙。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    使用 NTLM 身份验证,在调用服务器上执行的用户必须在标头中的域内可验证。这意味着您的 IIS 5.1 机器必须让其 IIS 实例(应用程序池)在域可行用户下运行。由于应用程序池几乎普遍由本地系统、网络服务或 AppPoolService(或类似的系统帐户)运行,这些都不是域可用的,因此您需要配置执行调用以由服务运行的 IIS 实例在域中具有适当权限的帐户。

    【讨论】:

    • 我使用 IIS 5.1 在我的机器上创建了管理员组的 ASPNET 帐户成员,在 IIS 6.0 上,我已将默认应用程序池设置为在我的域凭据下运行。问题仍然存在。
    • @Anurag - 不,运行 IIS 的用户必须来自负责 IIS 6.0 服务器的域级别。 ASPNET 是没有域访问权限的本地用户。
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2014-12-07
    • 2011-02-06
    • 2011-12-02
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多