2010-02-24 12 views
9

Classic ASP Request.ServerVariables ("LOGON_USER") devuelve el nombre de usuario incorrecto. Aquí está el escenario:Classic ASP Request.ServerVariables ("LOGON_USER") que devuelve el nombre de usuario incorrecto

Tengo dos cuentas en el dominio, una para administración y otra para uso normal. La cuenta de administrador se establece como administrador (en el grupo Administradores) en el servidor donde se ejecuta el script ASP. El servidor es Windows 2003 que ejecuta IIS 6.0.

Me conecto a mi máquina con mi cuenta de usuario normal y voy a la página y está devolviendo el nombre de usuario de mi cuenta de administrador. Por qué está pasando esto ? Esto funciona bien para otros.

<% 
Response.Write "LOGON_USER: " & Request.ServerVariables("LOGON_USER") & "<br>" 
Response.Write "REMOTE_USER: " & Request.ServerVariables("REMOTE_USER") & "<br>" 
Response.Write "AUTH_USER: " & Request.ServerVariables("AUTH_USER") & "<br>" 
Response.Write "<br>" 
'Show all server variables 
For Each Item In Request.ServerVariables 
Response.Write Item & " = " & Request.ServerVariables(Item) & "<br>" 
Next 
%> 

El acceso anónimo está desactivado y la autenticación de Windows está activada.

Gracias,

Jari

+2

Lo que cuenta es el grupo de aplicaciones IIS ejecutando bajo? – Kane

+0

¿AUTH_USER dice lo mismo? ¿Está habilitado el acceso anónimo? Si es así, ¿qué cuenta está configurada para el usuario anónimo? – AnthonyWJones

+0

Se ejecuta bajo cuenta del sistema – Jari

Respuesta

5

problema subyacente es probablemente el hecho de que tengo $ proporción abierto al mismo servidor con el nombre de usuario administrador al tiempo que las sesiones ASP en el mismo servidor con IE con el usuario normal.

Cambiando al usuario a la normal se puede hacer desde el Panel de control -> Cuentas de usuario -> Gestionar sus contraseñas -> Seleccione el servidor en cuestión y cambie el nombre de usuario por el correcto. No es necesario ingresar la contraseña. Ok, cierra y cancela. Es posible que deba abrir un nuevo IE para que el cambio surta efecto.

Esto tiene que ser hecho cada vez que el usuario cambia 'entre bastidores'.

+0

¿Qué versión de servidor que se ejecuta como que no se corresponde con las pantallas que estoy viendo y estoy sufriendo el mismo problema – pee2pee

+0

Si ha marcado "me recuerda" en la asignación de unidades de red inicial, a continuación, incluso después de la desconexión del las credenciales se almacenan en esa ubicación. – svandragt

0

El IIS es probable que pasen por debajo del usuario administrador y por lo que están recibiendo ese nombre. Por favor verifíquelo a su lado.

+0

Se ejecuta bajo la cuenta del sistema – Jari

1

De acuerdo con la documentación de MSDN en esta variable:

la cuenta de Windows que el usuario está haciendo pasar mientras está conectado al servidor Web. Use REMOTE_USER, UNMAPPED_REMOTE_USER o AUTH_USER para ver el nombre de usuario sin procesar que está contenido en el encabezado de la solicitud. La única vez que LOGON_USER tiene un valor diferente al de estas otras variables es si tiene instalado un filtro de autenticación.

Quizás tenga un filtro de autenticación.

+0

Si el filtro de autenticación significa filtro ISAPI, entonces no hay ninguno instalado. – Jari

2

No puedo explicar lo que está viendo sobre la base de la información suministrada hasta el momento. Puedo decirte que la cuenta en la que se ejecuta el grupo de aplicaciones es irrelevante.

La ASP clásica siempre imita a un usuario, ya sea la cuenta de usuario anónimo o el usuario asociado a la conexión a la que llega la solicitud. Ahí puede ser la clave de tu problema.

La autenticación en ASP se maneja en el nivel de conexión, una vez que se autentica una conexión, se asocia con un usuario. Los clientes y otros dispositivos HTTP pueden mantener una conexión abierta. Todas las solicitudes posteriores que llegan a la conexión no necesitarán una nueva autenticación, el usuario actual asociado con la conexión se usa para proporcionar al usuario el contexto en el que el subproceso que procesa la solicitud suplanta.

He visto que los dispositivos intermeáreos o los proxies de depuración (como el violín) mantienen conexiones y los vuelven a usar para solicitudes posteriores de una variedad de clientes. En esta situación, es posible tener un cliente ejecutándose en un contexto de usuario para que el servidor Web procese una solicitud en un contexto de usuario diferente. ¡Asqueroso!

He visto el mismo tipo de cosas en servidores Citrix Terminal más antiguos. Las conexiones HTTP fueron compartidas por varios clientes que se ejecutan en el servidor de terminal, lo que resulta en un cruce del contexto de seguridad. ¡Ay!

Otra variación de esto es cuando el acceso de un recurso en un servidor se rechaza para el usuario actual en la intranet. El navegador muestra un cuadro de diálogo de inicio de sesión de red y el usuario ingresa un usuario administrador. Mientras dure la sesión, el navegador ahora usa las credenciales de inicio de sesión de usuario de administrador para acceder a otros recursos en ese mismo servidor, incluso si el usuario con sesión iniciada lo hiciera.

Cuestiones relacionadas