Request.ServerVariables("LOGON_USER") devuelve una cadena vacía en ASP.NET
En este artículo se proporcionan soluciones para el problema en el que la Request.ServerVariables("LOGON_USER") variable devuelve una cadena vacía en ASP.NET.
Versión del producto original: ASP.NET
Número KB original: 306359
Síntomas
Si intenta obtener acceso a la Request.ServerVariables("LOGON_USER") variable en ASP.NET, se devuelve una cadena vacía.
Si usa Microsoft Visual C# .NET, la siguiente sintaxis tiene acceso a esta variable:
Request.ServerVariables["LOGON_USER"]
Causa
Este problema se produce porque las variables relacionadas con la autenticación de la colección no se rellenan si se usa la seguridad de acceso anónimo para obtener acceso ServerVariables a la página .aspx. Este problema también puede producirse si se proporciona acceso al usuario anónimo en la <authorization> sección del web.config archivo.
Solución
Para rellenar la variable al usar cualquier modo de autenticación distinto de , puede denegar el acceso al usuario anónimo en la sección del LOGON_USER None archivo <authorization> web.config autenticación. Para denegar el acceso al usuario anónimo en la <authorization> sección, siga estos pasos:
Cambie el modo de autenticación del archivoweb.config a cualquier otra cosa que no sea
None. Por ejemplo, la siguiente entrada del archivo web.config establece el modo de autenticación en autenticación basada en formularios:<authentication mode="Forms" />Para denegar el acceso al usuario anónimo en elweb.config, use la sintaxis siguiente:
<authorization> <deny users = "?" /> <!-- This denies access to the anonymous user --> <allow users ="*" /> <!-- This allows access to all users --> </authorization>
Si usa la autenticación Windows, también puede seguir los siguientes pasos para resolver este problema:
Cambie el modo de autenticación del archivoweb.config a la siguiente
Windowsmanera:<authentication mode="Windows" />En el Administrador de Servicios de Internet, haga clic con el botón secundario en el archivo .aspx o en la carpeta web Project y, a continuación, seleccione Propiedades.
Si selecciona Propiedades para la carpeta Web Project, seleccione la pestaña Seguridad del directorio. Si selecciona Propiedades para el archivo .aspx, seleccione la pestaña Seguridad de archivos.
En Acceso anónimo y control de autenticación, seleccione Editar.
En el cuadro de diálogo Métodos de autenticación, desactive la casilla Acceso anónimo y, a continuación, active la casilla Básica , Implícita o Integrada (desafío/respuesta NT).
Seleccione Aceptar para cerrar ambos cuadros de diálogo.
Estado
Este comportamiento es una característica del diseño de la aplicación.
Más información
ASP.NET proporciona nuevos modos de autenticación y esquemas de autorización, que puede configurar en los archivos .config autenticación. Por este motivo, la modificación de los modos de autenticación solo en IIS puede no producir siempre los resultados deseados. Por lo tanto, también debe tener en cuenta la configuración de seguridad en los .config archivos.
Nota
Cuando habilita la autenticación anónima junto con la autenticación de Windows o si concede acceso al usuario anónimo en la sección mientras usa cualquier modo de autenticación que no sea , otras variables de servidor como y (así como la propiedad) también devuelven una cadena <authorization> None AUTH_USER REMOTE_USER HttpContext.Current.User.Identity.Name vacía. Puede usar cualquiera de las resoluciones mencionadas anteriormente para rellenar estas variables.
En ASP.NET, también puede usar la propiedad del objeto para determinar si se está utilizando la seguridad de acceso IsAuthenticated Request anónimo. IsAuthenticated devuelve false si el acceso anónimo está activado y devuelve true si usa cualquier otro medio de autenticación como , , Forms o Passport Integrated (NT Challenge/Response) Basic .