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!!