没有弹出窗口的ASP经典Active Directory自动登录

时间:2011-11-02 15:59:31

标签: iis asp-classic active-directory

这里有类似的问题,但它们要么没有答案,要么没有ASP.Net。

我的情况是这样的: 我想,当用户访问内部站点(ASP Classic,IIS 6,Windows Server 2003)时,它会根据他们的Active Directory记录自动登录并确定他们是谁,没有弹出窗口要求他们输入用户名和密码。在IIS中使用匿名身份验证意味着LOGON_USER输出管理员用户。匿名关闭意味着我得到了弹出窗口。

由于他们已经登录到Windows,有没有办法让他们弄清楚他们是谁,而不是要求他们再次输入用户名和密码。

我已经破解了ASP中的AD集成。只需要阻止它询问用户名和密码。

提前致谢, 詹姆斯

3 个答案:

答案 0 :(得分:1)

在request.ServerVariables集合中,应该为经过身份验证的用户填写AUTH_USER项:

http://www.4guysfromrolla.com/demos/servervariables.asp

要让经典ASP以其他用户身份登录,您需要一个外部COM对象。 有一个在线示例,有一些VB6代码,您可以编译成一个activex COM对象,并从经典ASP调用以另一个用户登录(并再次注销):

http://www.iisfaq.com/Default.aspx?tabid=2947

登录后,您的asp进程将在登录的用户名下运行,不再在IIS中配置的用户下运行。

使用这两个信息,您应该能够在用户登录时计算出来,如果没有,则使用ASP自动将其登录到帐户下。弹出窗口将不再显示。

希望这有帮助,

埃里克

-edit-对不起,我只是意识到我可能误解了你的问题...当你的用户登录到Windows时,IIS会处理身份验证,并且在“目录安全性”下的IIS设置中检查“集成Windows身份验证” 。您是否尝试过同时选中此复选框和匿名访问,但是拒绝对IUSR_ [machinename]的内部网站文件夹进行READ访问? 这应该可以防止匿名用户访问,并允许Windows用户通过。 在搞乱网站根目录中的权限之前,最先在一个内部网站的子文件夹上测试它是最容易的。

答案 1 :(得分:1)

这对我很有帮助。我特别发现它不适合我的原因是有一个“。”在域名中。这使得该网站不被视为内部网站点。

答案 2 :(得分:0)

这取决于浏览器。您想要的是浏览器尝试使用当前用户凭据登录。在IE中,这是它识别为位于“Intranet区域”中的站点的默认行为。因此,一种方法是使用组策略来确保域中的计算机将内部网站添加到所有客户端计算机的Intranet站点列表中。

其他浏览器也有一种机制来列出当前用户凭据可用于满足服务器登录挑战的站点。