Accediendo al directorio activo de la organización desde .NET (I)

ldap1

Creo que me estoy aficionando a las series de posts no de la tele, ya que acabo de terminar la serie de artículos acerca de cómo acceder a la caché de Internet Explorer y ya estoy planteándome una nueva, sobre acceder al directorio activo mediante una aplicación realizada con C#. Esta serie, al igual que la anterior intentará ser lo más directa y práctica posible, y del mismo modo al final de la serie publicaré el código completo del ejemplo para su descarga.

El motivo...

...de esta serie es porque tanto en los foros como en los grupos de notícias, es muy común encontrar preguntas muy variadas acerca de cómo acceder a LDAP desde una aplicación .NET. Así que me he planteado empezar una serie de posts en los que mostraremos varios ejemplos: Mostrar información del usuario actual de Windows, averiguar los grupos a los que pertenece, validar credenciales contra un dominio para saber si son correctas, impersonar nuestra aplicación para que se ejecute con las credenciales de otro usuario, buscar usuarios o grupos en LDAP, extraer la lista de propiedades del objeto usuario, etc.

¿LDAP o Directorio Activo?

Antes de empezar quiero hacer una aclaración: ¿Es lo mismo LDAP que Directorio Activo? No, no es lo mismo.

LDAP es el acrónimo de (Lightweight Directory Access Protocol) que es es un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. Habitualmente se utiliza para acceder a la información almacenada de usuarios, grupos y equipos de una organizació y existen muchas implementaciones de este protocolo, desde Microsoft hasta Novell pasando por Red Hat, iPlanet u OpenLDAP.

El directorio Activo o AD es la implementación de LDAP realizada por Microsoft en su família Windows Server. Al igual que LDAP permite acceder a distintos tipos de objetos almacenados que representan los elementos de la organización. Cada uno de estos objetos tendrá atributos que permiten identificarlos en modo unívoco (por ejemplo, los usuarios tendrán campo "nombre", campo "email", etc..., las impresoras de red tendrán campo "nombre", campo "fabricante", campo "modelo", campo "usuarios que pueden acceder", etc). Toda esta información queda almacenada en Active Directory replicándose de forma automática entre todos los servidores que controlan el acceso al dominio.

Situaciones cotidianas

Nosotros los desarrolladores, como creadores de aplicaciones que deben coexistir en un entorno corporativo, cada vez nos encontramos en más ocasiones en las que nuestra aplicación debe utilizar los usuarios y grupos del AD de la empresa, en lugar de almacenar una base de datos propia de usuarios y grupos. Incluso me atrevería a decir que la frontera entre una aplicación madura, de uso corporativo, y que se integre con otras aplicaciones y servicios, a veces estriba en detalles como éste.

Hoy en día cada vez más empresas disponen de la figura del administrador del AD, que gestiona todos los datos de los empleados de la misma, de modo que ¿para que van a mantener otra base de datos con los usuarios de una aplicación, si éstos ya existen en el AD? Incluso puede ser peor ¿os imagináis cuántas aplicaciones funcionan de este modo? ¿Debemos mantener X bases de datos de usuarios por X aplicaciones? Esto puede ser el caos... ¡imaginaos la de datos duplicados que existen y lo difícil que resulta mantenerlos!

Gracias al .NET framework, hoy en día podemos integrar nuestras aplicaciones con el AD de la empresa, de forma que podamos aprovechar la ventaja de contar con un repositorio centralizado. De este modo podremos dejar en manos del administrador del AD la creación de usuarios, grupos y cómo se relacionan entre ellos, y nosotros encargarnos de lo que realimente nos importa: La aplicación.

LDAPServices1

En el próximo post empezaremos a construir nuestra aplicación de ejemplo, y para ello contaremos con la ayuda del namespace System.Security.Principal y de System.DirectoryServices... hasta entonces!

Published 11/6/2008 19:16 por Lluis Franco
Comparte este post:

Comentarios

# re: Accediendo al directorio activo de la organización desde .NET (I)

Thursday, June 12, 2008 1:04 AM por Romny

Interesante, ojala lo hagas tambien para asp.net

# re: Accediendo al directorio activo de la organización desde .NET (I)

Saturday, June 14, 2008 1:52 AM por devsoftx

Hola , tienes el codigo colgado.

se agradeceria bastante.

# re: Accediendo al directorio activo de la organización desde .NET (I)

Monday, June 16, 2008 3:43 PM por Sam

Quisiera saber si ya tienes el codigo y si es posible que lo implementemos en ASP.net

Seria de mucha ayuda ya que necesito realizar una aplicacion de este tipo.

# re: Accediendo al directorio activo de la organización desde .NET (I)

Wednesday, July 02, 2008 12:01 PM por Lluis Franco

:-)

Hola,

De hecho el código lo cuelgo siempre al final de la serie.

# re: Accediendo al directorio activo de la organización desde .NET (I)

Wednesday, October 22, 2008 10:39 PM por Jorge Luis

Seria bueno q colgaras el fuente en u archivo zipeado

# re: Accediendo al directorio activo de la organización desde .NET (I)

Wednesday, October 22, 2008 10:41 PM por Jorge Luis

Me gustaria revisar tu aplicacion al detalle es por eso que pido el codigo, amigo Luis Franco algun correo al que te pueda contactar,

Saludos

# re: Accediendo al directorio activo de la organización desde .NET (I)

Friday, October 24, 2008 9:12 AM por Lluis Franco

:-)

Hola,

Acabo de colgar un post recopilatorio de enlaces y código:

geeks.ms/.../series-resumen-de-los-enlaces.aspx

Saludos,

# re: Accediendo al directorio activo de la organización desde .NET (I)

Thursday, December 04, 2008 10:00 PM por Galatas

Q ondas oye muy buen articulo y lo q quieres hacer pues la verdad me serviria de muxo mira mi mail es lic.edc@hotmail.com si puedes agregame y ahi platicamos va yo ahorita estoy recopilando info acerca de lo mismo bueno q andes bien espero tener noticias tuyas pronto hasta pronto ...

# re: Accediendo al directorio activo de la organización desde .NET (I)

Thursday, February 25, 2010 12:28 PM por Antonio M.

Agregado a favoritos ¡¡¡¡ jejeje Muy buen aporte Lluis, por gente como tu merece mucho la pena internet y el desarrollo. Sigue asi... ¡¡¡

# re: Accediendo al directorio activo de la organización desde .NET (I)

Monday, April 26, 2010 2:02 PM por Carlos J. Soto

Gracias Hermano, Estaba Buscando algo parecido, Gracias Mil

# re: Accediendo al directorio activo de la organización desde .NET (I)

Friday, December 10, 2010 3:42 PM por kenyi

gracias  me  hacia  falta  esta  chevere :::::::