经典 ASP 启用 Windows 身份验证但 Request.ServerVariables(“LOGON_USER”) 有时 return 错误的用户名
Classic ASP enabled Windows Authentication but Request.ServerVariables(“LOGON_USER”) sometimes return wrong username
我在 IIS 7 中部署了一个经典的 ASP。Windows 身份验证已启用,其他所有身份验证均已禁用。因此该页面不需要任何登录,服务器能够确定 NTADMIN 用户名。
我们对 Apache 进行了重写,以便可以使用 https://www-site/app/page.asp rather than accessing it like https://ntp123:8090/app/page.asp 等别名访问该页面;重写是这样的:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/app https://%{HTTP_HOST} %{REQUEST_URI} [R,L]
ProxyPass /app http://ntp123:8090/app/
ProxyPassReverse /app http://ntp123:8090/app/
大部分时间,也许 99% 的时间代码 returns 是正确的 "NTADMIN\user":
LoginName = Request.ServerVariables("Logon_User")
但是,在某些情况下,代码会获取错误的 NTADMIN 用户名。我试图通过 Google 寻找任何类似的问题,但大多数都没有显示解决方案。
这里的ASP/IIS高手或许有解决办法?
原来罪魁祸首是 Apache HTTP Rewrite,因为根据 IIS 日志的观察,客户端 IP 地址始终相同,在本例中为 Apache 服务器。看起来它要么有一些缓存问题,要么只是与 IIS 的 windows 身份验证不兼容。无论哪种方式,通过删除它,问题都不会再遇到。
我在 IIS 7 中部署了一个经典的 ASP。Windows 身份验证已启用,其他所有身份验证均已禁用。因此该页面不需要任何登录,服务器能够确定 NTADMIN 用户名。
我们对 Apache 进行了重写,以便可以使用 https://www-site/app/page.asp rather than accessing it like https://ntp123:8090/app/page.asp 等别名访问该页面;重写是这样的:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/app https://%{HTTP_HOST} %{REQUEST_URI} [R,L]
ProxyPass /app http://ntp123:8090/app/
ProxyPassReverse /app http://ntp123:8090/app/
大部分时间,也许 99% 的时间代码 returns 是正确的 "NTADMIN\user":
LoginName = Request.ServerVariables("Logon_User")
但是,在某些情况下,代码会获取错误的 NTADMIN 用户名。我试图通过 Google 寻找任何类似的问题,但大多数都没有显示解决方案。
这里的ASP/IIS高手或许有解决办法?
原来罪魁祸首是 Apache HTTP Rewrite,因为根据 IIS 日志的观察,客户端 IP 地址始终相同,在本例中为 Apache 服务器。看起来它要么有一些缓存问题,要么只是与 IIS 的 windows 身份验证不兼容。无论哪种方式,通过删除它,问题都不会再遇到。