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

我有一个经典的ASP网站VB6后端。 VB然后使用MSXML2在同一台服务器上调用Web服务。 这适用于我们所有的服务器,但只有一个 如果我将Web服务站点设置为接受匿名login,则会起作用,但是如果我只强制集成安全性,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 

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

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

将“网站”更改为网站的编号(可以在mmc中看到)。 详细信息请参阅“如何configurationIIS以支持Kerberos协议和NTLM协议进行networking身份validation”

401.2错误是“被服务器configuration拒绝”。 你可以在这里和这里阅读。

更新之前:你确定凭据没有从asp网站传递? 尝试把这个网站变成匿名login。 并configuration应用程序池运行在一个高特权帐户(只有临时!),看看是否解决了这个问题。

另外,你可以粘贴从iis日志的行吗? 特别是错误代码(401和下两个数字)。

遗留应用程序传递凭据有很多问题。 我的猜测是,VB6的东西正在使用NTLM和服务器将不会接受它。

堆栈溢出你可能会得到更多的帮助。