ASP.NET MVC et l'authentification en mode mixte
J'ai un scénario où je obliger les utilisateurs à être en mesure de s'authentifier à l'encontre d'un ASP.NET application web MVC en utilisant l'authentification Windows ou l'authentification par Formulaires. Si l'utilisateur est sur le réseau interne, ils vont utiliser l'authentification Windows et si ils sont de la connexion de l'extérieur ils vont utiliser l'authentification par Formulaires. J'ai vu très peu de gens en posant la question, comment puis-je configurer un ASP.NET application web MVC pour cela, mais je n'ai pas trouvé une explication complète.
Svp quelqu'un peut-il fournir une explication détaillée, avec des exemples de code, sur la façon dont cela sera fait?
Grâce.
Alan T
Vous devez vous connecter pour publier un commentaire.
Ce qui est appelé mode d'authentification mixte. Fondamentalement, vous ne pouvez pas atteindre ce niveau dans un unique demande parce que dans IIS une fois que vous avez configuré l'authentification Windows pour un répertoire virtuel, il n'acceptera plus les utilisateurs de différents domaines. Donc, fondamentalement, vous avez besoin d'avoir deux applications, la première avec l'Authentification Windows et le second (la principale de l'application) à l'aide de l'authentification par Formulaires. La première application est constitué d'une seule adresse qui sera tout simplement rediriger vers le principal de l'application, par l'émission d'un ticket d'authentification de l'utilisateur de domaine.
Cela peut être fait. Inverser la configuration, réglez l'application/de la racine à utiliser Anonyme et l'Authentification de Formulaires... De cette façon, vous pouvez configurer l'authentification mixte au sein de la même application web, mais il est difficile. Alors d'abord, configurez votre application pour l'Authentification par Formulaires avec loginUrl="~/WinLogin/WinLogin2.aspx". Dans MVC, routage remplace l'authentification des règles fixées par IIS, donc besoin d'utiliser une page aspx, comme IIS pouvez configurer l'authentification sur le fichier. Permettre aux Anonymes et des Formulaires d'Authentification sur la racine de l'application web. Activer l'Authentification Windows et désactiver l'authentification anonyme dans racine/WinLogin répertoire. Ajouter personnalisé 401 et 401.2 pages d'erreur de redirection pour le Compte/Signin URL.
Cela permettra de n'importe quel navigateur capable de passer à travers l'utilisation de l'authentification windows intégrée pour auto signin. Alors que certains appareils obtiendrez invité pour les informations d'identification (comme l'iPhone) et d'autres appareils comme les blackberry redirigé vers signin page.
Cela crée également un cookie ajoutant explicitement les utilisateurs, les rôles et crée un principe Générique, de sorte que l'autorisation basée sur les rôles peuvent être utilisés.
dans WinLogin2.aspx (en WinLogin sous-répertoire "racine" de l'application web dans IIS, et configuré pour utiliser l'Authentification Windows, Anonyme désactivé, et les Formes activé (comme ne pouvez pas désactiver...note IIS va se plaindre lorsque vous activez l'authentification windows, il suffit de les ignorer) :
Dans IIS 7.5, cliquez sur les Pages d'Erreur, définissez la page 401 de chemin d'accès au Fichier de Redirect401.htm fichier, avec ce code:
Dans AccountController...
Mondiale.asax:
web.config
De crédit dues à http://msdn.microsoft.com/en-us/library/ms972958.aspx
Ce sera probablement vivre au bas de cette question et de ne jamais être trouvé, mais j'ai été en mesure de mettre en œuvre ce qui a été décrit à
http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/
Il était assez facile et banal. N'a pas besoin de plusieurs applications ou de biscuits hacks, juste l'extension de la FormsAuthModule, et de faire des web.les modifications de configuration.
Je sais que c'est un vieux post, mais tout ce qui vit à jamais sur internet!
De toute façon, j'ai dû déplacer un ancien site de IIS6 à IIS8. C'est un WebForms site, mais je suppose que cette solution très simple est le même.
J'ai reçu le message d'erreur : Impossible de convertir l'objet de type 'System.De sécurité.Principal.WindowsIdentity' de type 'System.Web.De sécurité.FormsIdentity'.
Tous j'ai fait était de créer un nouveau pool d'applications pour le site web. Lors de la création de cette, j'ai mis le pipeline Géré le mode "Classique". (Lire la suite ici - http://www.hanselman.com/blog/MovingOldAppsFromIIS6ToIIS8AndWhyClassicModeExists.aspx) Ne pas oublier de mettre le site web du pool d'applications pour la nouvelle piscine que vous venez de créer.