Доступ запрещен для создания пользователя на LDAP

У меня есть веб-приложение, которое должно иметь возможность создавать пользователей на LDAP. Я создал cn=intranet,dc=example,dc=com и мне нужно, чтобы иметь возможность добавлять пользователей вне ou=People,dc=example,dc=com,

Поэтому я пытаюсь добавить пользователей как cn=intranet используя такие атрибуты, как:

    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)

Что бы я ни делал, я, кажется, застрял с

(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)

У меня есть TRIED (то есть, не оптимально, но должно определенно работать?) Следующее:

Первая запись используется для резервного копирования, игнорируйте ее (разве это действительно актуально?)

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

Я пытался использовать подстановочные знаки * для доступа к cn="intranet", с oclAccess AFTER и ДО ДО доступа по умолчанию ({3}), но даже это не работает, и я не понимаю, почему.

В противном случае, из того, что я прочитал, лучшая рабочая конфигурация, которую я хочу, должна быть такой:

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

1 ответ

Вам придется переместить"to * by * write"править вплоть до{0}слот, прежде чем он позволит вашемуcn=intranetпользователи возможность обновлять или создавать новых пользователей.

Я полагаю, что это может быть связано с тем, что список управления доступом по умолчанию в слоте {0}: «to attrs=userPassword при самостоятельной записи с помощью анонимной аутентификации с помощью * none», который блокирует доступ к атрибуту userPassword, несмотря на новое правило, позднее в конфигурации.

Кажется, что порядок имеет значение, и другие ваши правила имеют огромное значение для конечного результата.

Другие вопросы по тегам