获取Windows域名

时间:2011-05-03 18:45:10

标签: http asp-classic

我需要使用经典的asp从Internet Explorer获取Windows域名(如果使用经典的asp,我可以用另一种方式尝试它)。

我需要这样做才能将域名插入数据库行。

总而言之,我需要从访问特定网页的Internet Explorer中检索Windows计算机域名。

为了做到这一点,我知道在哪里可以找到并举例说明吗?有可能吗?

2 个答案:

答案 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网络安全信息。但是,为了实现这一点:

  1. 用户必须在Windows上运行IE
  2. Web服务器必须是Windows上的IIS
  3. 客户端和服务器必须具有Windows安全关系
  4. 必须为Windows Auth启用IIS
  5. 客户端和服务器之间的网络路径有很多限制。代理和防火墙通常会阻止IE客户端使用IIS进行Windows身份验证。
  6. 如果您可以使用此清单,我认为您将在其中一个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

您可以在此处阅读如何操作:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5f8fe119-4095-4094-bba5-7dec361c7afe.mspx?mfr=true

之后你可以使用:

  

在Classic ASP Request.ServerVariables中   (“AUTH_USER”)或   Request.ServerVariables(“LOGON_USER”)

它似乎也适用于其他浏览器,不仅适用于IE。

再次感谢Michael Levy指出我正确的方向。