openldap search acl

2

Estou tentando escrever um controle de acesso para o OpenLDAP para permitir que um usuário pesquise com uma determinada base dn, mas obtenha apenas resultados de alguns subn dns. Eu joguei com muitas regras diferentes, mas não consigo fazer isso funcionar. Não tenho certeza se é possível.

Por exemplo:
Eu tenho o usuário com o dn uid=testuser,ou=people,dc=example,dc=com . Eu quero que esse usuário possa pesquisar com uma base de dc=example,dc=com e recuperar entradas em ou=people,dc=example,dc=com . Há muitas outras subunidades de OU sob dc=example,dc=com , mas somente as entradas em ou=people devem ser retornadas (para bônus, eu gostaria apenas que alguns atributos sejam retornados também).

Isso pode ser feito?

    
por Patrick 16.04.2012 / 06:11

1 resposta

0

Finalmente descobri isso. Existem várias partes diferentes para fazer isso funcionar.

Primeiro as 2 regras da ACL:

Access to dn.base="dc=example,dc=com" by \
  dn.base="uid=testuser,ou=people,dc=example,dc=com" \
  search

Access to dn.one="ou=people,dc=example,dc=com" \
  attrs=entry,uid,cn,sn,gecos,mail,uidNumber,gidNumber by \
  dn.base="uid=testuser,ou=people,dc=example,dc=com" \
  read
  • A ordem das regras não importa porque estamos usando dn.base no 'acesso a' para a primeira regra. Se fosse 'dn.children', a ordem importaria.
  • A primeira regra concede acesso de pesquisa de uid=testuser a dc=example,dc=com , mas nada mais. Sem a segunda regra, tudo o que voltaria era se a busca correspondia ou não a algo, não ao que correspondia.
  • A segunda regra concede uid=testuser acesso de leitura a ou=people e os filhos um nível de profundidade ( dn.one ). A capacidade de pesquisa está incluída na permissão de leitura.
  • O entry attr é importante na segunda regra, pois a realização de uma pesquisa exige que o acesso a esse atributo seja compatível com a entrada.
  • Quando a entrada for correspondida, a pesquisa retornará com todos os outros atributos permitidos.
por 16.04.2012 / 17:43