Atualmente, estou trabalhando na integração da autenticação LDAP em um sistema e gostaria de restringir o acesso com base no grupo LDAP. A única maneira de fazer isso é através de um filtro de pesquisa e, portanto, acredito que minha única opção seja o uso do atributo "memberOf" no meu filtro de pesquisa. Entendo que o atributo "memberOf" é um atributo operacional que pode ser criado pelo servidor para mim sempre que um novo atributo "membro" é criado para qualquer entrada "groupOfNames" no servidor. Meu principal objetivo é poder adicionar um atributo "member" a uma entrada "groupOfNames" existente e fazer com que um atributo "memberOf" correspondente seja adicionado ao DN que forneço.
O que eu consegui alcançar até agora:
Ainda sou bastante novo na administração do LDAP, mas com base no que encontrei no guia do administrador do openldap, parece que a Manutenção de Associação Reversa ao Grupo, conhecida como "memberof overlay", alcançaria exatamente o efeito que estou procurando.
Meu servidor está atualmente executando uma instalação de pacote (slapd no ubuntu) do openldap 2.4.15 que usa a configuração de tempo de execução no estilo "cn = config". A maioria dos exemplos que encontrei ainda faz referência ao método "slapd.conf" antigo de configuração estática e tentei o máximo possível para adaptar as configurações ao novo modelo baseado em diretório.
Eu adicionei as seguintes entradas para ativar o módulo membro de sobreposição:
Ative o módulo com 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
Ativou a sobreposição para o banco de dados e permitiu que ele usasse suas configurações padrão (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
Meu resultado atual:
Usando a configuração acima, eu posso adicionar um novo "groupOfNames" com qualquer número de entradas "member" e ter todos os DNs envolvidos atualizados com um atributo "memberOf". Isso faz parte do comportamento que eu esperaria. Embora eu acredite que o seguinte deveria ter sido realizado com o membro da sobreposição, ainda não sei como fazer o seguinte e gostaria de receber qualquer conselho:
- Adicione um atributo "member" a um "groupOfNames" EXISTENTE e faça com que um atributo "memberOf" correspondente seja criado automaticamente.
- Remova um atributo "member" e faça com que o atributo "memberOf" correspondente "seja removido automaticamente.
slapadd
(no banco de dados parado) o caminho certo para fazer isso?