Rya*_*yan 5 vb6 msxml web-services
我有一个经典ASP网站的VB6后端.然后,VB使用MSXML2.XMLHTTP在同一服务器上调用Web服务.这适用于我们所有的服务器但只有一个.如果我将Web服务站点设置为接受匿名登录,则它将起作用,但是如果我仅强制集成安全性,MSXML将返回"拒绝访问"错误.
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
' Load XML
objDom.async = False
objDom.loadXML XmlBody
' Open the webservice
objXmlHttp.Open "POST", AsmxUrl, False
' Create headings
objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl
' Send XML command
objXmlHttp.send objDom.xml
Run Code Online (Sandbox Code Playgroud)
编辑:根据AnthonyWJones的建议,我下了清单,它仍然无法正常工作.使用Fiddler,它显示一个具有401响应的请求.身份验证选项卡显示:
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Run Code Online (Sandbox Code Playgroud)
我确实注意到了一种奇怪的行为.当我使用登录到远程桌面的用户的凭据来呼叫网站时,它将起作用.我得到谈判,挑战,然后200,它会工作.当用户通过远程桌面登录而不是其他时间登录时,为什么会这样做有什么想法?
我猜想当服务器使用 Windows 集成安全性进行质询时,您依赖于底层 WinINET HTTP 堆栈向服务器提供当前用户凭据。
默认情况下,如果 WinINET 认为主机服务器位于 Intranet 区域中,则它只会执行此操作。即使如此,用户 Intranet 区域安全设置也可能已调整为不允许这样做。
当以运行 VB6 应用程序的同一用户身份登录时,尝试使用客户端计算机上的浏览器访问该站点。它认为服务器位于哪个区域?如果不是 Intranet,您需要将主机添加到属于该区域的站点列表中。当您在那里时,打开区域安全设置并向下滚动到“用户身份验证”类别。登录应配置为“仅在内联网区域自动登录”。
编辑:根据您的评论,这些内容配置正确。我会做的几件事是:-
至此我们进入了系统管理领域。例如,如果 fiddler 跟踪显示身份验证尝试未使用 NTLM,则其使用 Kerberos 身份验证,请检查服务器和客户端的时钟是否设置在彼此以及域控制器的 5 分钟内。
检查服务器事件日志,服务器是否无法联系域控制器。
在仅具有 Windows 集成安全性的服务器上放置一个简单的 .htm 并尝试从浏览器中访问它,是否成功?
归档时间: |
|
查看次数: |
10063 次 |
最近记录: |