让http后从服务器使用用户证书-综合安全
-
20-08-2019 - |
题
我在尝试做一个职位,从asp经典的服务器侧页,使用户证书...
我使用的msxml2.ServerXMLHTTP到编程方式使后
我已经尝试与几构在IIS5.1网站,但是我没办法可以使IIS运行与一个指定的帐户...
我做了一个小asp页运行whoami验证是什么帐户iis过程中,我采用...
IIS5.1,使用的综合安全过程中使用:
my_machine\IWAM_my_machine
我禁用综合的安全,并保留域帐户作为匿名的访问和我得到相同(¿?)
测试对用户我这样做
private function whoami()
dim shell, cmd
set shell = createObject("wscript.shell")
set cmd = shell.exec( server.mapPath( "whoami.exe" ) )
whoami = cmd.stdOut.readAll()
set shell = nothing: set cmd = nothing
end function
是因为我发出的命令?
我想让http post电话,另一个站点工作的综合安全...
所以我需要一些方法来传递的凭据,或至少要运用一个指定账户,然后配置的远端站点推该帐户...
我以为这只是设置的网站与综合安全将是足够的...
我如何可以实现这样的事情?
ps:与IIS6,发生一样 但是,如果我改变游泳池canfiguration我得到以下信息,从whoami
NT权力机构\网络服务
NT权力机构\当地的服务
NT权力机构\系统
如果我设定一个域帐户,我得到一个"服务不可用"的消息...
编辑:发现了这个
它说什么我supossed,"如果验证用户的请求,将螺纹令是基于所认证的账户",但不知怎的,我不起作用这样的...我能怎么可能失踪了?
编辑:
好的whoami件事是显然骗我,我试图与下列功能
private function whoami_db( serverName, dbName )
dim conn, data
set conn = server.createObject("adodb.connection")
conn.open "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
"Initial Catalog=" & dbName & ";Data Source=" & serverName
set data = conn.execute( "select suser_sname() as user_name" )
whoami_db = data("user_name")
data.close: conn.close
set data = nothing: set conn = nothing
结束功能
和一切似乎都是工作的好...
但我怎样才能让msxml2.ServerXMLHTTP工作中与用户证书???
解决方案
您是否正确whoami.exe混淆了你。启动一个单独的过程中造成新的过程来作为当前进程的用户运行。在XP中,这将是该COM +应用主机(DLLHOST),并会正常运行作为IWAM_<machine>
。上IIS6它会在w3wp.exe的工作过程和通常运行为NT AUTHORITY \网络服务。
然而一个线程中处理的HTTP请求将模拟不同的安全令牌。随着你发现集成安全性,这将发出请求的用户,如您的SSPI实验的安全令牌证实了。与匿名访问在网站/应用程序配置的匿名用户被使用,这通常是<MACHINE>\IUSR_<machine>
。
关于你与ServerXMLHTTP的特定问题的这个返回到基础组件的WinHTTP。这在默认情况下,如果被访问的服务器是代理绕过列表将只发送当前用户的凭据。即使如此,它可以将ServerXMLHTTP的配置它永远不会发送用户的凭据,我还没有测试的情况我自己。
不幸的是ServerXMLHTTP的提供上WinHTTP的配置细节非常有限。但是,如果这是一个显示塞,那么你总是可以直接使用的WinHTTP组件自己: -
Dim oWinHTTP
Dim oDOM
Const AutoLogonPolicy_Always = 0
Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHTTP.SetAutoLogonPolicy AutoLogonPolicy_Always
oWinHTTP.Open "GET", "http://remoteserver.org/getsomexml.xxx", False
oWinHTTP.Send
If oWinHTTP.Status = 200 Then
Set oDOM = CreateObject("MSXML2.DOMDocument.3.0")
oDOM.async = false
oDOM.Load oWinHTTP.ResponseStream
End If
Set oWinHTTP = Nothing
这应该适用于HTTP,HTTPS为它得到真正的混乱。