我需要使用经典的asp从Internet Explorer获取Windows域名(如果使用经典的asp,我可以用另一种方式尝试它)。
我需要这样做才能将域名插入数据库行。
总而言之,我需要从访问特定网页的Internet Explorer中检索Windows计算机域名。
为了做到这一点,我知道在哪里可以找到并举例说明吗?有可能吗?
答案 0 :(得分:1)
Web浏览器默认使用Web协议(想想Http,Html,Ssl等)。通过您的用户名,我知道您熟悉定义这些协议的RFC。
Windows网络使用不同的协议。域是Windows网络中的逻辑安全边界。是的,在现代版本的Windows域安全性中使用标准协议,如Kerberos。
您遇到的问题是,Web浏览器通常不会向Web服务器发送有关客户端的额外信息。那将是一个巨大的安全问题。因此,默认情况下,Web浏览器(甚至是IE)不会在Http请求中自愿提供任何网络安全信息。
当您的Web服务器需要客户端身份验证时,Web浏览器必须向服务器提供更多安全信息。根据您的Web服务器所需的身份验证类型,您的浏览器将发送不同的信息。例如,在Http Basic身份验证中,浏览器将发送用户名和密码。
据我所知,从Web浏览器获取Windows网络域信息的最佳方法是强制浏览器使用Windows身份验证进行身份验证。这是Microsoft构建的一种特殊身份验证模式,可以通过标准Http协议推送Microsoft网络安全信息。但是,为了实现这一点:
如果您可以使用此清单,我认为您将在其中一个http标头中找到域信息。您可能必须使用域名\用户的用户名解析它。但对不起,我不记得具体细节了。即使在经典的ASP中也应如此。有关Windows身份验证的详细信息,请访问http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication
http://msdn.microsoft.com/en-us/magazine/cc301387.aspx与ASP.NET有关,但它说:
对于使用Windows进行身份验证的用户 身份验证,名称是 form domainname \ username,其中 domainname是域的名称 用户注册的(或 机器名称,如果它是本地帐户 而不是域帐户),和 username是用户的名字。
在Classic ASP中,尝试Request.ServerVariables(“AUTH_USER”)或Request.ServerVariables(“LOGON_USER”)
Windows身份验证的一种替代方法是使用Basic Auth并强制用户使用其Windows凭据作为域\用户登录。然而,这会出现其他安全问题,您应该只通过SSL执行此操作。但是,此技术将在Internet上运行,并且不需要客户端PC和服务器之间的安全关系。这也适用于非IE浏览器。
答案 1 :(得分:0)
如果有人碰巧遇到同样的问题,这就是我实施的解决方案(几乎就是Michael Levy所说的)。
您必须在IIS中激活集成Windows身份验证:http://en.wikipedia.org/wiki/Integrated_Windows_Authentication。
之后你可以使用:
在Classic ASP Request.ServerVariables中 (“AUTH_USER”)或 Request.ServerVariables(“LOGON_USER”)
它似乎也适用于其他浏览器,不仅适用于IE。
再次感谢Michael Levy指出我正确的方向。