Hace tiempo escribí un post de acceso a un LDAP, y es que a veces es necesario acceder a la información que guardamos en él.  Unas veces queremos consultar algún dato y otras utilizarlo para autenticación y autorización en el uso de alguno de las aplicaciones que vamos desarrollando para que sean usadas en un ámbito corporativo ( o simplemente en un dominio)

En este caso voy a describir como sería el proceso de recuperación de un correo electrónico, ya que es uno de los datos que por regla general siempre están presentes en los LDAP.

En este ejemplo disponemos del nombre de usuario, lo cual nos facilita el acceso al directorio, ya que no tendremos que recorrerlo sino que ejecutaremos una consulta sobre este usuario. El código seria este:

 

//Primero acotamos los varoles de busqueda y la ruta del Active Directoy,

string[] domainAndUsername =usuario.Persona.AccountName.Split(‘\\’);
string strDomain =domainAndUsername[0].ToString();
string username = domainAndUsername[1].Trim();

//Creamos una entra al Active Directory que devolverá el árbol en la variable entry.
DirectoryEntry entry = new DirectoryEntry(UrlLdap,UsuarioLDAP,PaswordLDAP);

//Realizamos una busqueda sobre la entrada anteriormente seleccionada.
DirectorySearcher search = new DirectorySearcher(entry);

//Filtramos el usuario del que queremos obtener los datos.
search.Filter = “samaccountname=” + username;

//Y realizamos una busqueda de todos sus datos.
SearchResult results = search.FindOne();

ResultPropertyCollection colProperties = results.Properties;

//Obtenemos la propiedad mail
string mail = string.Empty;
foreach (object value in colProperties[“mail”])
{
mail = value.ToString();
}

return mail;

 

Espero que os sea de utilidad

 

Un saludo a todos

Anuncios