ASP.Net MVC 3 Connexion et l'Authentification Windows
Je suis en train de travailler sur un ASP.Net MVC 3 et je vais avoir un Utilisateur de la table qui stocke les noms d'utilisateurs et leurs mots de passe. J'ai créé un supplément de ADUsername (magasins d'Active Directory du Domaine/nom d'utilisateur).
Je suis en train de faire ce qui suit:
- Les utilisateurs de l'application à partir de l'Intranet ne doit pas voir la page de connexion. Leur Domaine/nom d'utilisateur doit être reçu automatiquement et comparée à ADUsername champ.
- Les utilisateurs de l'exécution de l'application à partir d'internet (sur le réseau local) ou des utilisateurs sans ADUsername valeur: devriez voir l'écran de connexion et ils devraient utiliser mon nom d'utilisateur personnalisé et les champs de Mot de passe pour vous connecter.
Cela a été très facile en utilisant le Serveur de Développement Visual Studio et très difficile à l'aide de IIS 🙂
Que j'ai mis mon site Web.Config pour l'utilisation des formes, je suis en utilisant WindowsIdentity.GetCurrent().Le nom de l'actuel ADUsername et puis, je recherche ma table Utilisateur de trouver l'utilisateur et FormsAuthentication.SetAuthCookie lui.
À l'aide de IIS est toujours de retour APPPOOL\ASP.NET v4.0 utilisateur qui ne reflète pas le domaine/utilisateur dont j'avais besoin.
Toute Aide?
OriginalL'auteur IoC | 2011-12-06
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une tâche facile à accomplir. L'identité Windows de votre réseau intranet de l'utilisateur ne sera disponible pour vous lorsque l'Authentification Windows dans IIS) est activée, l'authentification anonyme désactivé. Lorsque le navigateur de l'utilisateur frappe le serveur, IIS effectuer la stimulation/réponse NTLM processus pour valider l'utilisateur. Notez que cette procédure challenge/réponse en fait se produit sur chaque individu de la requête HTTP, pas seulement une fois.
Le problème avec ce mécanisme est que vos Formulaires d'authentification ne sera plus utilisé, car il débute après l'authentification Windows s'exécute, et ne pas avoir à s'authentifier juste déclenche un IIS de refus d'accès - pas de secours à l'authentification de Formulaires.
De construire un hybride, vous aurez besoin de:
Configurer votre application web principal pour authentifier les utilisateurs avec l'authentification par Formulaires. Mettre le web.config de ce genre. Générer votre propre clé de l'ordinateur - c'est la clé pour assurer cookie partage des œuvres
Créer une nouvelle, distincte web app à utiliser uniquement pour l'authentification NTLM. Elle autorise ensuite rediriger vers l'application principale. Désolé, les deux applications ne peuvent pas être combinées.
Dans NTLM web application, de modifier les web.config mode d'Authentification comme ci-dessous:
Dans NTLM webapp, le contrôleur fait qu'une seule chose - de l'extrait de nom d'utilisateur de l' (WindowsPrincipal)Thread.CurrentPrincipal(); et les appels FormsAuthentication.SetAuthCookie(..). Ensuite rediriger vers le site web de l'app. Ne pas utiliser WindowsIdentity.GetCurrent (), car il ne sera pas exacte, sans l'usurpation d'identité est activée [voir msdn.microsoft.com/en-us/library/ff647076.aspx] que vous ne voulez pas être à l'aide de
Vous ne pouvez pas tester tout de cette vertu de Cassini ou IIS Express; vous devez utiliser IIS 7.5.
Goto IIS 7.5 et activer la Fonctionnalité de Délégation pour l'Authentification "Anonyme" et "Authentification Windows".
Créer des applications IIS pour vos Formulaires application basée sur les
Clic droit sur votre nouvellement créé Formes d'application et Ajouter Application. Définir le chemin d'accès à votre authentification NTLM application, et le nom de quelque chose comme "IntranetAuthentication"
Dans le navigateur l'accès http://localhost/YourSite pour l'authentification par formulaires, et http://localhost/YourSite/IntranetAuthentication à voir NTLM auth puis passthru auth de travail retour à la page principale du site
Au sein de votre entreprise, de diriger les utilisateurs de l'intranet de l'utilisation de l'intranet de l'ouverture de session. De l'extérieur tout le monde utilise des formes régulières page d'authentification.
Il y a trop de cause à poster la solution ici, j'ai commis un exemple de travail pour vous ici bitbucket.org/geoffreys/so-dual-win-forms-auth
Putain viens de remarquer que la moitié de la solution commis. Désolé de commettre reste tommorow - ce qu'ils devraient obtenir u sur la bonne voie quand même
Là vous allez, tous engagés
Super réponse! 🙂 Si vous ajoutez à cela un Intranet asp.net application web MVC. N'oubliez pas de désactiver le roleManager, ou le CurrentPrincipal sera un RolePrincipal, et pas un WindowsPrincipal.
OriginalL'auteur geoffreys
si vous utilisez une authentification mixte pourquoi ne pas vous obtenez AD Utilisateur par l'intermédiaire de contexte?
Je pense qu'il est quelque chose de mal avec la configuration d'IIS. Assurez-vous de désactiver l'authentification anonyme sur votre site et activer l'Authentification Windows si vous voulez avoir AD auth.
OriginalL'auteur Stefano.net