Acesso negado para criar usuário no LDAP

1

Eu tenho um aplicativo da web que precisa ser capaz de criar usuários em um LDAP. Eu criei um cn=intranet,dc=example,dc=com e preciso que ele possa adicionar usuários unside ou=People,dc=example,dc=com .

Por isso, estou tentando adicionar usuários como cn=intranet usando atributos como:

    dn = "uid=something,ou=People,dc=telecom-etude,dc=com"
    attrs = {
        cn: 'something',
        givenName: 'something',
        sn: 'something',
        uid: 'something',
        displayName: 'something',
        objectClass: ["inetOrgPerson", 'top', 'Person' ],
    }
    ldap = Devise::LDAP::Connection.admin # returns a Net::LDAP binding with 'cn=intranet'
    ldap.add(dn: dn, attributes: attrs)

Seja o que for que eu faça, parece que estou preso a

(Net::LDAP) LDAP Creation ERROR : #<OpenStruct code=50, error_message="no write access to parent", matched_dn="", message="Insufficient Access Rights">
(phpmyldap) 0x32 (LDAP_INSUFFICIENT_ACCESS)

Eu TENTOI (significa não-ideal, mas definitivamente deveria funcionar?) o seguinte:

A primeira entrada é usada para backups, ignore-a (a menos que seja realmente relevante?)

olcAccess: {0}to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPa
 ssword,sambaPwdLastSet by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by dn="cn=jarvisrepl,dc=example,dc=com" write
 by * none
olcAccess: {1}to dn.base="" by * read
oclAccess: {2}to * by dn="intranet,dc=example,dc=com" write
olcAccess: {3}to * by self write by dn="cn=admin,dc=example,dc=com" writ
 e by * read
oclAccess: {4}to * by dn="intranet,dc=example,dc=com" write

Eu tentei usar curingas * para acessar cn="intranet", com oclAccess AFTER e ANTES do acesso padrão ({3}), mas mesmo isso não funciona, e não entendo o porquê.

Caso contrário, pelo que eu li, a melhor configuração de trabalho que eu quero deve ser esta:

olcAccess: {1}to dn.base="" by * read
oclAccess: {2}to dn.base="ou=People,dc=example,dc=com" attributes=children by dn="intranet,dc=example,dc=com" write
oclAccess: {3}to dn.onelevel="ou=People,dc=example,dc=com" by dn="intranet,dc=example,dc=com" write
olcAccess: {4}to * by self write by dn="cn=admin,dc=example,dc=com" writ
 e by * read
    
por Cyril Duchon-Doris 18.02.2015 / 02:05

0 respostas