ASP.NET MVC – Authentification des utilisateurs par rapport à Active Directory, mais demande que le nom d’utilisateur et le mot de passe soient saisis

Je développe une application MVC3 qui nécessitera l’authentification d’un utilisateur contre une AD. Je sais qu’il existe une option dans MVC3 pour créer une application intranet qui authentifie automatiquement un utilisateur par rapport à une AD, mais elle utilise l’authentification Windows et les connecte automatiquement. Cette application est accessible sur les postes de travail “Open” où l’utilisateur devra entrer son nom d’utilisateur et son mot de passe de domaine. Tout exemple ou tutoriel en ligne serait génial. Un exemple de projet serait exceptionnel.

Vous pouvez utiliser le modèle d’application Internet standard avec l’authentification par formulaire et insérer un ActiveDirectoryMembershipProvider dans le web.config :

               

De cette façon, vous obtenez le formulaire de connexion au modèle d’application Internet, et cela se vérifie par rapport à AD pour vous.

Ensuite, il suffit d’effectuer un nettoyage de AccountController pour supprimer la fonctionnalité de réinitialisation du mot de passe / changement de mot de passe / registre en ne laissant que Login.

Comme mentionné ci-dessus, vous pouvez utiliser le fournisseur d’appartenance défini dans le fichier web.config.

Le code ci-dessous fait partie de l’implémentation du ‘AccountController’ du code du modèle MVC 3 et a été légèrement modifié pour fonctionner avec ActiveDirectory:

  [HttpPost] public ActionResult LogOn( LogOnModel model, ssortingng returnUrl ) { if( ModelState.IsValid ) { // Note: ValidateUser() performs the auth check against ActiveDirectory // but make sure to not include the Domain Name in the User Name // and make sure you don't have the option set to use Email Usernames. if( MembershipService.ValidateUser( model.UserName, model.Password ) ) { // Replace next line with logic to create FormsAuthenticationTicket // to encrypt and return in an Http Auth Cookie or Session Cookie // depending on the 'Remember Me' option. //FormsService.SignIn( model.UserName, model.RememberMe ); // Fix this to also check for other combinations/possibilities if (!Ssortingng.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } 

Si vous utilisez .NET 3.5 – alors lisez cet article pour l’alternative: