Доступ запрещен для создания пользователя на 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, несмотря на новое правило, позднее в конфигурации.
Кажется, что порядок имеет значение, и другие ваши правила имеют огромное значение для конечного результата.