Continuando il discorso intrapreso nel post precedente, siamo giunti ora alla configurazione del provider per Active Directory.
La nostra stringa di connessione è stata creata in precedenza quindi adesso possiamo procedere con la configurazione di questo provider, che ricordo era già presente in ASP.NET 2.0.

1 <membership defaultProvider="ActiveDirectoryMembershipProvider"> 2 <providers> 3 <add name="ActiveDirectoryMembershipProvider" 4 type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 5 connectionStringName="ActiveDirectoryConnection" 6 enableSearchMethods="true" 7 connectionUsername="[DOMINIO]\Administrator" 8 connectionPassword="[PASSWORD]" 9 attributeMapUsername="sAMAccountName"/> 10 </providers> 11 </membership>

Con questa tipologia di configurazione, il nostro utente non dovrà fare altro che inserire la userName Windows senza dominio e la password.
Quindi per prima cosa andiamo a creare un nuovo Controller per gestire questa parte, che chiameremo SecurityController.

1 public class SecurityController : Controller 2 { 3 [ControllerAction] 4 public void Login() 5 { 6 ViewData["ErroreLogin"] = string.Empty; 7 RenderView("Login"); 8 } 9

E nel global.asax dobbiamo aggiungere la Route per il Login cosi' da visualizzare qualcosa del genere (http://miosito/Login)

1 RouteTable.Routes.Add(new Route 2 { 3 Url = "Login", 4 Defaults = new { controller = "Security", action = "Login" }, 5 RouteHandler = typeof(MvcRouteHandler) 6 });

Per finire, bisogna creare il form di Login, molto semplice con un campo username, password e una bella checkbox reminder per i coockies ...
La action della Form sarà /Login/Authenticate e l' action rispettiva sarà qualcosa del genere:

1 [ControllerAction] 2 public void Authenticate 3 (string txtUsername, string txtPassword, string chkRemember) 4 { 5 if(Membership.ValidateUser(txtUsername,txtPassword)) 6 { 7 FormsAuthentication.SetAuthCookie(txtUsername, chkRemember != null); 8 FormsAuthentication.RedirectFromLoginPage(txtUsername, chkRemember != null); 9 } 10 else 11 { 12 ViewData["ErroreLogin"] = "Errore durante la fase di Login. Possibile utente o password errati."; 13 RenderView("Login"); 14 } 15 } 16

Ricordatevi solamente di rinominare i controlli html con lo stesso id e name del parametro che state passando alla Action!!