Actualmente estoy trabajando en la integración de la autenticación LDAP en un sistema y me gustaría restringir el acceso basado en el grupo LDAP. La única forma de hacerlo es a través de un filtro de búsqueda y, por lo tanto, creo que mi única opción es utilizar el atributo "memberOf" en mi filtro de búsqueda. Entiendo que el atributo "memberOf" es un atributo operativo que el servidor puede crear para mí en cualquier momento que se cree un nuevo atributo "member" para cualquier entrada "groupOfNames" en el servidor. Mi objetivo principal es poder agregar un atributo "miembro" a una entrada existente "groupOfNames" y agregar un atributo "memberOf" coincidente al DN que proporciono.
Lo que he logrado hasta ahora:
Todavía soy bastante nuevo en la administración de LDAP, pero según lo que encontré en la guía del administrador de openldap, parece que Reverse Group Membership Maintence, también conocido como "memberof overlay", lograría exactamente el efecto que estoy buscando.
Mi servidor está ejecutando actualmente una instalación de paquete (slapd en ubuntu) de openldap 2.4.15 que utiliza la configuración de tiempo de ejecución de estilo "cn = config". La mayoría de los ejemplos que he encontrado todavía hacen referencia al antiguo método "slapd.conf" de configuración estática y he hecho todo lo posible para adaptar las configuraciones al nuevo modelo basado en directorios.
He agregado las siguientes entradas para habilitar el módulo memberof overlay:
Habilite el módulo con olcModuleLoad
cn=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z
Habilitó la superposición para la base de datos y le permitió usar su configuración predeterminada (groupOfNames, member, memberOf, etc.)
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z
Mi resultado actual:
Al usar la configuración anterior, puedo agregar un NUEVO "groupOfNames" con cualquier número de entradas "miembro" y tener todos los DN involucrados actualizados con un atributo "memberOf". Esto es parte del comportamiento que esperaría. Si bien creo que lo siguiente debería haberse logrado con el miembro de superposición, todavía no sé cómo hacer lo siguiente y con gusto agradecería cualquier consejo:
- Agregue un atributo "member" a un "groupOfNames" EXISTENTE y haga que se cree automáticamente el atributo "memberOf" correspondiente.
- Elimine un atributo "member" y haga que el atributo "memberOf" correspondiente se elimine automáticamente.
slapadd
(en la base de datos detenida) la forma correcta de hacerlo?