1 votes

IIS et l'authentification Windows n'autorisent pas les pages d'erreur

J'essaie cette méthode depuis deux jours. Je n'arrive pas à comprendre quel est le problème. J'ai essayé tous les paramètres d'IIS comme "Moving negotiate down, disable other authentication" mais cela ne fonctionne pas. Voici donc mon problème : j'ai une application web intranet en ASP.NET qui utilise des noms d'utilisateur et des mots de passe stockés dans Active Directory. J'ai cinq pages différentes dans mon application. Toutes les pages sont stockées dans des dossiers séparés avec leurs fichiers web.config. Ces fichiers web.config contiennent les noms des utilisateurs autorisés à visualiser la page en question.

<authorization>
<allow users="Domainname\username"/>
</authorization>

Je veux rediriger les utilisateurs qui ne figurent pas dans la liste ci-dessus vers une autre page d'erreur avec un message approprié. J'ai utilisé ceci

protected void Application_EndRequest(object sender, EventArgs e)
{

    if (HttpContext.Current.Response.Status.StartsWith("401"))
    {
        HttpContext.Current.Response.ClearContent();
        Response.Redirect("~/myerrorpage.aspx?myerrormsg=you are not allowed");
    }
}

Cela fonctionne sur le localhost, mais lorsque j'installe mon application dans IIS, tous les utilisateurs autorisés (ceux qui figurent dans la liste) sont également redirigés vers la page du message d'erreur.

En dehors d'IIS, il fonctionne correctement. Cependant, je ne suis pas en mesure de rediriger les utilisateurs non autorisés vers la page de message d'erreur. J'ai également essayé avec les paramètres des pages d'erreur de IIS, mais j'ai le même problème.

Veuillez me suggérer ce que je dois faire pour remédier à ce problème. Existe-t-il une autre façon de procéder ?

0voto

MikeBaz - MSFT Points 1253

Je ne sais pas avec certitude si c'est ce qui est en cause dans votre cas particulier, mais en général, le processus est le suivant :

  1. Le navigateur tente de se connecter anonyme lors de la première connexion
  2. Le serveur web dit "désolé, vous ne pouvez pas faire cela, erreur 401, voici les façons dont l'utilisateur peut s'authentifier".
  3. Le navigateur se charge de l'authentification (en demandant à l'utilisateur ses données d'identification, par exemple).
  4. Le navigateur fait une deuxième demande, avec l'information d'en-tête d'authentification incluse.

Je pense que vous échouez à l'étape (1) en attrapant le premier 401 avant que l'utilisateur n'ait eu l'occasion de fournir des informations d'identification. Vous pouvez vérifier cela avec les outils F12 ou avec un outil comme Fiddler.

0voto

Rebecca Points 11

Si vous utilisez l'authentification Windows, vous devez garder ceci à l'esprit : si vous activez manuellement l'authentification Windows dans IIS, n'incluez pas le code ci-dessous dans votre web.config.

<authentication mode="Windows" />

si vous l'utilisez, vous rencontrerez le même problème que celui que j'ai mentionné dans ma question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X