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 variable devuelve una Request.ServerVariables("LOGON_USER") cadena vacía en ASP.NET.

              Versión original del producto: ASP.NET
Número de KB original: 306359

Síntomas

Si intenta acceder a la Request.ServerVariables("LOGON_USER") variable en ASP.NET, se devuelve una cadena vacía.

Si usa Microsoft Visual C# .NET, la sintaxis siguiente tiene acceso a esta variable:

Request.ServerVariables["LOGON_USER"]

Causa

Este problema se produce porque las variables relacionadas con la autenticación de la ServerVariables colección no se rellenan si se usa la seguridad de acceso anónimo para acceder a la página de .aspx. Este problema también puede producirse si se concede acceso al usuario anónimo en la <authorization> sección del archivo web.config .

Solución

Para rellenar la LOGON_USER variable cuando se usa cualquier modo de autenticación distinto Nonede , puede denegar el acceso al usuario anónimo en la <authorization> sección del archivo web.config . Para denegar el acceso al usuario anónimo en la <authorization> sección, siga estos pasos:

  1. Cambie el modo de autenticación en el archivo web.config a cualquier cosa que no sea None. Por ejemplo, la siguiente entrada en el archivo web.config establece el modo de autenticación en autenticación basada en formularios:

    <authentication mode="Forms" />
    
  2. Para denegar el acceso al usuario anónimo en el archivo web.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 autenticación de Windows, también puede usar los pasos siguientes para resolver este problema:

  1. Cambie el modo de autenticación en el archivo web.config a como se indica a Windows continuación:

    <authentication mode="Windows" />
    
  2. En el Administrador de servicios de Internet, haga clic con el botón derecho en el archivo .aspx o en la carpeta Proyecto web y, a continuación, seleccione Propiedades.

  3. Si selecciona Propiedades para la carpeta Proyecto web , seleccione la pestaña Seguridad del directorio . Si selecciona Propiedades para el archivo .aspx, seleccione la pestaña Seguridad de archivos.

  4. En Acceso anónimo y control de autenticación, seleccione Editar.

  5. 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ásico, Resumen o Integrada (desafío/respuesta nt).

  6. 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 de .config. Por este motivo, es posible que la modificación de los modos de autenticación solo en IIS no siempre produzca los resultados deseados. Por lo tanto, también debe tener en cuenta la configuración de seguridad en los archivos .config.

Nota:

Cuando habilita la autenticación anónima junto con autenticación de Windows o si concede acceso al usuario anónimo en la <authorization> sección mientras usa cualquier modo de autenticación distinto Nonede , otras variables de servidor como AUTH_USER y REMOTE_USER (así como la HttpContext.Current.User.Identity.Name propiedad) también devuelven una cadena vacía. Puede usar cualquiera de las resoluciones mencionadas anteriormente para rellenar estas variables.

En ASP.NET, también puede usar la IsAuthenticated propiedad del Request objeto para determinar si se usa la seguridad de acceso 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, Passport, Integrated (NT Challenge/Response)o Basic.

Referencias