Forms Authentication con login via Active Directory

di Daniele Bochicchio, in ASP.NET, Active Directory, C#,

Spesso, specie all'interno di intranet, è necessario integrare l'applicazione web con un dominio in Active Directory già esistente, per evitare il proliferare di password e gestire l'accesso alle applicazioni da un punto centralizzato.
In casi come questi è possibile continuare ad utilizzare la Forms Authentication, come spiegato in diversi articoli pubblicati in passato, aggiungendo però l'autenticazione basata su Active Directory.
Prendendo spunto dallo script #705, è possibile variare la pagina di login in modo che contenga una funzione come la seguente, che si occupa di effettuare il login via Active Directory:

private bool Login(string username, string password)
{
  // percorso AD - leggere da web.config
  string path = "LDAP://server2003/DC=bochicchio,DC=local";

  try
  {
    // effettuo una ricerca in Active Directory
    using (DirectorySearcher search = new DirectorySearcher(new DirectoryEntry(path, username, password)))
    {

      // cerca utente
      search.Filter = "(&(objectclass=user)(objectCategory=person)(SAMAccountName=" + 
        (username.IndexOf("@")>-1?
          username.Split('@')[0] :
          username)
        + "))";

      // proprietà richieste
      search.PropertiesToLoad.Add("cn"); // nome reale

      // verifico che l'utente ci sia
      var result = search.FindOne();

      if (result == null)
        return false;

      // imposto il vero nome in una variabile, da passare
      var name = result.Properties["cn"][0].ToString();

      // se arriva qui, è stato autenticato
      return true;
    }
  }
  catch
  {
    // se c'è un errore, allora non ha passato il login
    return false;
  }
}

Il resto del codice è lo stesso da utilizzare per la Forms Authentication. Per approfondimenti:
https://www.aspitalia.com/articoli/articoli_ricerca_forms_authentication.aspx
https://www.aspitalia.com/liste/usag/script_ricerca_forms_authentication.aspx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi