Ciao,
devo eseguire l'autenticazione degli utenti tramite Ldap, ma non so da dove partire.
Sto leggendo dei doc in rete, ma se qualcuno ha già esperienza in merito....
Ciao,
devo eseguire l'autenticazione degli utenti tramite Ldap, ma non so da dove partire.
Sto leggendo dei doc in rete, ma se qualcuno ha già esperienza in merito....
Ciao, allora la problematica non è complicata...
innanzitutto devi inserire nel tuo web.config un provider con i dati di connessione verso LDAP in questo modo
questo va incodice:<add name="AD1" type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" server="_INDIRIZZOIPDELSERVERLDAP" port="PORTA" useSSL="false" userDNAttribute="distinguishedName" userNameAttribute="sAMAccountName" userContainer="CN=Users,dc=dominio,dc=it" userObjectClass="person" userFilter="ObjectClass=User" scope="Subtree" connectionUsername="usernameConnessione" connectionPassword="PasswordConnessione" otherRequiredUserAttributes="sn,givenname,cn" />codice:<system.web> <membership defaultProvider="defaultProvider"> <providers>
e Poi per la validazione dell'utente puoi utilizzare una semplice funzione fatta in questo modo.
Devi usare come reference:codice:public override bool ValidateUser(string username, string password) { bool success = false; try { if (!success) { try { LdapMembershipProvider ldap1 = Membership.Providers["AD1"] as LdapMembershipProvider; success = success || ldap1.ValidateUser(username, password); } catch (Exception ex) { // throw (new Exception("Errore in fase di accesso al Provider AD1", ex)); } } return success; } catch (Exception ex) { throw (new Exception("Errore nel metodo Validate", ex)); } }
using Microsoft.Office.Server.Security;
using System.Security;
Ed il gioco è fatto.
Attualmente uso questo :
E mi funziona mi fa passare l'autenticazione, però poi vorrei recuperare tutte le proprietà assegnate all'utente loggato e non so come fare.codice:Function AuthenticateUser(path As String, user As String, pass As String) As Boolean Dim de As New DirectoryEntry("LDAP://172.XX.20.XX/DC=aXXXXXa,DC=local", user, pass, AuthenticationTypes.None) Try Dim ds As DirectorySearcher = New DirectorySearcher(de) ds.Filter = "(objectClass=*)" ds.PropertiesToLoad.Add("cn") Dim results = ds.FindOne() For Each c In results.Properties Dim a = c.ToString Next ds.Dispose() Return True Catch de.Dispose() de = Nothing Return False End Try End Function
In questo modo ho mantenuto l'autenticazione classica di Asp.net.
Se mi passa questa routine di ldap successivamente uso la FormsAuthentication per creare il ticket di autenticazione.
Questo è in c#
dove de è il DirectoryEntrycodice:foreach (string property in de.Properties.PropertyNames) { properties += property + ", "; }
Nel frattempo ho risolto.
Adesso sto cercando come cambiare la password dell'utente.
Grazie.
Bene!
Ciao
Sto provando cosi ma mi da un errore strano chilometrico.
Codice PHP:
utente.Invoke("ChangePassword", New Object() {pass, "nuovapassword"})
utente.CommitChanges()
utente.Close()
io ho sempre fatto così invece.....
codice:DirectoryAttributeModification modifyUserPassword = new DirectoryAttributeModification(); modifyUserPassword.Operation = DirectoryAttributeOperation.Replace; modifyUserPassword.Name = "userPassword"; modifyUserPassword.Add("NUOVAPASSWORD"); ModifyRequest modifyRequest = new ModifyRequest("USERNAME", modifyUserPassword); DirectoryResponse response = connection.SendRequest(modifyRequest);
La prenderò in considerazione....certo ci sono tanti modi per farlo.
Grazie ancora.