2014-07-23 14 views
5

J'ai créé une nouvelle application ASP.NET MVC 5 avec un contrôle d'accès par défaut fourni par Visual Studio 2013 et Owin Middleware. J'ai activé l'authentification de base sur IIS (désactivant toutes les autres authentifications) pour protéger le site contre les personnes qui n'ont pas l'utilisateur/mot de passe que j'ai créé sous Windows. Il résulte d'une « redirection boucle » dans le navigateur.Authentification OWIN avec authentification de base IIS

Toutes les idées pourquoi? Comment puis-je protéger un site web sans changement le code?

Répondre

5

Par défaut dans Startup.Auth.cs de fichiers, il y aura quelque chose comme ceci:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Main/Account/Login"), 
       CookieName = "OwinAuthCookie", 
      }); 

Lorsque vous activez l'authentification de base dans IIS, voici ce qui se passe:

  1. Module IIS de base d'authentification voit qu'il n'y a pas d'en-tête d'authentification, il renvoie un HTTP 401 Response.
  2. La réponse n'est pas retournée immédiatement, mais est traitée par Owin.
  3. Owin voit la demande a obtenu 401 (Unauthorized) Response, il redirige vers le LoginPath configuré.
  4. Votre navigateur traite la redirection, tente d'ouvrir la nouvelle URL et nous sommes de retour au point 1. Et theres est la boucle.

Ce que vous pouvez faire est de commenter la propriété LoginPath dans le code ci-dessus. Cela devrait arrêter la boucle de redirection, mais peut aussi (mais ne doit pas, selon votre implémentation) briser l'authentification pour les utilisateurs de l'application. En fin de compte, j'ai finalement implémenté un petit middleware Owin et fait moi-même l'authentification de base.

Ces liens pourraient être utiles:

+0

Je l'ai fait aussi. J'ai créé une page pour authentifier l'utilisateur et désactivé l'authentification de base. – Fabio