ASP.NET MVC: autentica gli utenti contro Active Directory, ma richiede l’immissione di nome utente e password

Sto sviluppando un’applicazione MVC3 che richiede l’autenticazione di un utente contro un annuncio. So che esiste l’opzione in MVC3 per creare un’applicazione Intranet che autentica automaticamente un utente contro un annuncio, ma utilizza l’autenticazione di Windows e li registra automaticamente. È ansible accedere a questa applicazione su workstation “aperte” in cui l’utente dovrà inserire il nome utente e la password del dominio. Qualsiasi esempio o tutorial online sarebbe fantastico. Un progetto di esempio sarebbe eccezionale.

È ansible utilizzare il modello di applicazione Internet standard con l’autenticazione dei moduli e inserire un ActiveDirectoryMembershipProvider nel web.config :

               

In questo modo si ottiene il modulo di accesso al modello di applicazione Internet e si convalida con AD per te.

Quindi è solo questione di una pulizia di AccountController per rimuovere la password di reimpostazione / modificare la password / la funzionalità di registrazione lasciando solo il login.

Come accennato in precedenza, è ansible utilizzare il provider di appartenenze definito nel file web.config.

Il codice sotto è all’interno dell’implementazione di “AccountController” dal codice di MVC 3 Template ed è stato leggermente modificato per funzionare con ActiveDirectory:

  [HttpPost] public ActionResult LogOn( LogOnModel model, string 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 (!String.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } 

Se si utilizza .NET 3.5 – quindi leggere questo articolo per l’alternativa: