将凭据从网站传递到同一服务器上的 Web 服务

将凭据从网站传递到同一服务器上的 Web 服务

我有一个用于经典 ASP 站点的 VB6 后端。然后,该 VB 使用 MSXML2 调用同一服务器上的 Web 服务。这适用于我们除一台服务器之外的所有服务器。如果我将 Web 服务站点设置为接受匿名登录,它将正常工作,但是,如果我强制仅集成安全性,MSXML 将返回“访问被拒绝”错误。

我假设凭证没有从该服务器上的 VB 后端传递到 Web 服务。发生这种情况的原因有哪些?

编辑:这是我收到的错误消息。当我从服务器或其他计算机访问网站时,我收到了该消息。如果我直接访问 Web 服务,则一切正常。

2009-07-16 13:56:47 W3SVC1 <IP Address> POST /reportprint/reportprint.asmx - 80 - <IP ADDRESS> Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) 401 2 2148074254

答案1

更新:尝试将网站设置为 NTLM 身份验证(而不是默认的 NTLM 和 Kerberos)。

open cmd.exe
go to directory:
C:\Inetpub\AdminScripts
type:
cscript adsutil.vbs set w3svc/<WebSite>/root/NTAuthenticationProviders "NTLM"

将“WebSite”更改为网站编号(可在 mmc 中看到)。详细信息请参见“如何配置 IIS 以支持 Kerberos 协议和 NTLM 协议进行网络身份验证”

401.2 错误是“服务器配置拒绝”。您可以阅读有关它的信息这里这里

更新前:您确定凭据不是从 asp 站点传递的吗?尝试将此站点设置为匿名登录。并将应用程序池配置为在高权限帐户上运行(仅临时!),看看是否能解决问题。

另外,您能粘贴 iis 日志中的行吗?特别是错误代码(401 和接下来的两个数字)。

答案2

使用旧版应用程序传递凭据存在很多问题。我猜是因为 VB6 使用的是 NTLM,而服务器不会接受它。

您可能会在 Stack Overflow 上获得更多帮助。

相关内容