Задний план
У меня есть супер простой сервер openldap, в котором практически ничего нет, кроме администратора, пары OU и пользователя.
Я могу войти и авторизоваться против него с правами администратора cn=admin,dc=example,dc=com
однако любые добавленные мной пользователи не могут подключиться к нему для аутентификации.
Вот представление каталога в виде дерева, чтобы было понятно:
Первоначально я пытался авторизоваться против него для использования с OpenVPN, журналы, которые я там получил, были Incorrect password supplied for LDAP DN "uid=myuser,ou=users,dc=example,dc=com"
Однако я знал, что пароль был правильным, что привело меня к тому, что я застрял ...
Этот сервер использует cn=config
конфигурация, без использования файла конфигурации!
Вот (что я считаю актуальным) вырезано из slapcat -b cn=config
вывод:
Как видите, я вслепую добавил olcAccess
записи, чтобы попытаться решить.
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcAccess: {0} to * by * auth
olcAccess: {1} to * by anonymous auth
olcAccess: {2}to * by self auth
olcAccess: {3}to * by * read
olcAccess: {4}to attrs=userPassword,shadowLastChange by self write by anonymous auth by * none
olcAccess: {5}to dn.base="" by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW:: <<hidden>>
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 03eab422-8c94-1038-90ce-9fb3bcaac9c4
creatorsName: cn=admin,cn=config
createTimestamp: 20181205044311Z
entryCSN: 20181206111241.430739Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20181206111241Z
у меня есть olcAccess: {0} to * by * auth
как ВЕРХНЯЯ запись {0} - Afaik, который должен разрешить авторизацию для всех / чего угодно, правильно ??
Я использую Apache Directory Studio, чтобы помочь взаимодействовать с сервером, вот снимок экрана с подтверждением пароля:
А вот и тест на действие "привязки":
У пользователя все работает отлично cn=admin,dc=example,dc=com
.
Я пытаюсь просто добавить нескольких простых пользователей, например: uid=myuser,ou=users,dc=example,dc=com
и позволить им аутентифицироваться в каталоге. Мне действительно не нужно ничего особенного, например, роли / и т. Д., Все пользователи будут на одном уровне и разделены на группы, через которые внешние службы будут фильтровать их для аутентификации.
Эти пользователи, которых я добавляю, являются объектным классом posixAccount.
Любая информация приветствуется, я нашел много других сообщений SE и старых сообщений на форуме с аналогичными проблемами, но все, что я нашел, просто указывает на добавление olcAccess
что я либо делаю неправильно, либо не работает на меня.
Я попытался перезапустить сервер после выполнения olcAccess
записи, так что отметьте это из списка.
Так что ACL была отвлекающим маневром.
Очевидно, LDAP заботится о том, как хешировать пароль пользователя, учетная запись администратора имеет SSHA. Новые пользователи, которых я создавал, я использовал хеш SHA512 для пароля. Как только я сбросил пароли пользователей с помощью хеширования SSHA, привязка заработала. Тьфу.
Я немного почитаю, но если кто-нибудь знает, как я могу преобразовать своих пользователей в использование хеширования SHA512 или SSHA-512, я был бы признателен. А пока оставлю как есть.
Кроме того, для всех, кто сталкивается с чем-то похожим в отношении ACL. Теперь он работает, просто применив olcAccess: {0}to * by * read
как единственный olcAccess
правило и вроде бы нормально.