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
Tags ldap ruby-on-rails