Attualmente sto lavorando all'integrazione dell'autenticazione LDAP in un sistema e vorrei limitare l'accesso in base al gruppo LDAP. L'unico modo per farlo è tramite un filtro di ricerca e quindi credo che la mia unica opzione sia l'uso dell'attributo "memberOf" nel mio filtro di ricerca. Sono consapevole che l'attributo "memberOf" è un attributo operativo che può essere creato dal server per me ogni volta che viene creato un nuovo attributo "member" per qualsiasi voce "groupOfNames" sul server. Il mio obiettivo principale è quello di poter aggiungere un attributo "membro" a una voce "groupOfNames" esistente e aggiungere un attributo "memberOf" corrispondente al DN fornito.
Quello che sono riuscito a raggiungere finora:
Sono ancora abbastanza nuovo nell'amministrazione LDAP, ma in base a ciò che ho trovato nella guida dell'amministratore di openldap, sembra che Reverse Group Membership Maintence, noto anche come "memberof overlay", ottenga esattamente l'effetto che sto cercando.
Il mio server sta attualmente eseguendo un'installazione di pacchetto (slapd su ubuntu) di openldap 2.4.15 che utilizza la configurazione di runtime in stile "cn = config". La maggior parte degli esempi che ho trovato fanno ancora riferimento al vecchio metodo "slapd.conf" di configurazione statica e ho fatto del mio meglio per adattare le configurazioni al nuovo modello basato su directory.
Ho aggiunto le seguenti voci per abilitare il modulo overlay memberof:
Abilita il modulo 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
Abilitato l'overlay per il database e consentito l'utilizzo delle impostazioni predefinite (groupOfNames, member, memberOf, ecc.)
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
Il mio risultato attuale:
Utilizzando la configurazione sopra, sono in grado di aggiungere un NUOVO "groupOfNames" con un numero qualsiasi di voci "member" e avere tutti i DN coinvolti aggiornati con un attributo "memberOf". Questo fa parte del comportamento che mi aspetterei. Mentre credo che quanto segue dovrebbe essere stato realizzato con il membro overlay, non so ancora come fare e sarei lieto di ricevere qualsiasi consiglio:
- Aggiungi un attributo "membro" a un "groupOfNames" ESISTENTE e crea automaticamente un attributo "memberOf" corrispondente.
- Rimuovere un attributo "membro" e far rimuovere automaticamente l'attributo "membroOf" corrispondente.
slapadd
(sulla base di dati interrotto) il modo giusto per farlo?