Request.ServerVariables(« LOGON_USER ») retourne une chaîne vide dans ASP.NET

Cet article fournit des solutions au problème où la Request.ServerVariables("LOGON_USER") variable retourne une chaîne vide dans ASP.NET.

              Version d’origine du produit : ASP.NET
Numéro de la base de connaissances d’origine : 306359

Symptômes

Si vous essayez d’accéder à la Request.ServerVariables("LOGON_USER") variable dans ASP.NET, une chaîne vide est retournée.

Si vous utilisez Microsoft Visual C# .NET, la syntaxe suivante accède à cette variable :

Request.ServerVariables["LOGON_USER"]

Cause

Ce problème se produit parce que les variables liées à l’authentification dans la ServerVariables collection ne sont pas renseignées si vous utilisez la sécurité d’accès anonyme pour accéder à la page .aspx. Ce problème peut également se produire si vous accordez à l’utilisateur anonyme l’accès dans la <authorization> section du fichier web.config .

Résolution

Pour remplir la LOGON_USER variable lorsque vous utilisez un mode d’authentification autre que None, vous pouvez refuser l’accès à l’utilisateur anonyme dans la <authorization> section du fichier web.config . Pour refuser l’accès à l’utilisateur anonyme dans la <authorization> section, procédez comme suit :

  1. Remplacez le mode d’authentification dans le fichier web.config par autre chose que None. Par exemple, l’entrée suivante dans le fichier web.config définit le mode d’authentification sur Authentification basée sur les formulaires :

    <authentication mode="Forms" />
    
  2. Pour refuser l’accès à l’utilisateur anonyme dans le fichier web.config , utilisez la syntaxe suivante :

    <authorization>
        <deny users = "?" /> <!-- This denies access to the anonymous user -->
        <allow users ="*" /> <!-- This allows access to all users -->
    </authorization>
    

Si vous utilisez Authentification Windows, vous pouvez également suivre les étapes suivantes pour résoudre ce problème :

  1. Modifiez le mode d’authentification dans le fichier web.config comme Windows suit :

    <authentication mode="Windows" />
    
  2. Dans le Gestionnaire des services Internet, cliquez avec le bouton droit sur le fichier .aspx ou le dossier Projet web , puis sélectionnez Propriétés.

  3. Si vous sélectionnez Propriétés pour le dossier Projet web , sélectionnez l’onglet Sécurité du répertoire . Si vous sélectionnez Propriétés pour le fichier .aspx, sélectionnez l’onglet Sécurité du fichier.

  4. Sous Accès anonyme et contrôle d’authentification, sélectionnez Modifier.

  5. Dans la boîte de dialogue Méthodes d’authentification, décochez la zone Accès anonyme case activée, puis sélectionnez la zone de case activée De base, Digest ou Intégrée (défi/réponse NT).

  6. Sélectionnez OK pour fermer les deux boîtes de dialogue.

Statut

Ce comportement est inhérent au produit.

Plus d’informations

ASP.NET fournit de nouveaux modes d’authentification et schémas d’autorisation, que vous pouvez configurer dans les fichiers .config. Pour cette raison, la modification des modes d’authentification dans IIS seul peut ne pas toujours produire les résultats souhaités. Par conséquent, vous devez également prendre en compte les paramètres de sécurité dans les fichiers .config.

Remarque

Lorsque vous activez l’authentification anonyme conjointement avec Authentification Windows ou si vous accordez l’accès à l’utilisateur anonyme dans la <authorization> section pendant que vous utilisez un mode d’authentification autre que None, d’autres variables de serveur telles que AUTH_USER et REMOTE_USER (ainsi que la HttpContext.Current.User.Identity.Name propriété ) retournent également une chaîne vide. Vous pouvez utiliser l’une des résolutions mentionnées ci-dessus pour remplir ces variables.

Dans ASP.NET, vous pouvez également utiliser la IsAuthenticated propriété de l’objet Request pour déterminer si la sécurité accès anonyme est utilisée. IsAuthenticated retourne false si l’accès anonyme est activé et retourne true si vous utilisez un autre moyen d’authentification tel que Forms, Passport, Integrated (NT Challenge/Response)ou Basic.

References