LINUX.ORG.RU
ФорумAdmin

Авторизация в LDAP

 


0

1

Я пытаюсь разобраться с OpenLDAP, но никак не пойму как заводить пользователей. Речь идет не о системных пользователях, а именно о пользователях в LDAP.

Вот мой файл /etc/ldap/ldap:

include     /etc/ldap/schema/core.schema
modulepath  /usr/lib/ldap
moduleload  back_bdb
database    bdb
suffix      "dc=example, dc=com"
pidfile     /var/run/slapd.pid
argsfile    /var/run/slapd.args
directory   /var/lib/ldap

rootdn "cn=Manager,dc=example,dc=com"
rootpw secret

access to *
   by self   write
   by users  read
   by * none
Создаем users.ldif и запускаем (# ldapadd -f users.ldif -x -D «cn=Manager,dc=example,dc=com» -w secret):
dn: ou=myusers,dc=example,dc=com
objectClass: organizationalUnit
ou: myusers
description: myusers ou

dn: cn=user1,ou=myusers,dc=example,dc=com
objectClass: person
cn: user1
sn: USER-1
userPassword: hello

До этого момента все проходит нормально, но теперь я пытаюсь подключиться к ldap от имени user1:

# ldapsearch -L -x -b "dc=example,dc=com" -D cn=user1,ou=myusers,dc=example,dc=com -w hello
и получаю:
ldap_bind: Invalid credentials (49)

Объясните мне, как это делается?


Ответ на: комментарий от zgen

О! Спасибо вам, заработало!

Я вижу вы в этом хорошо разбираетесь, а я не могу найти нормального руководства, может вы направите меня на «путь истинный»? Я не могу понять, где slapd берет информацию, в каком поле хранится пароль? Вот если я, к примеру, создам свой objectClass с атрибутом userPassword он будет работать? Или если создать и свой атрибут userPassword? И вообще, могу я создать свой атрибут, в котором будут храниться данные в определенном формате (например телефонный номер: (ххх) ххх-хх-хх), то есть, чтобы сервер не давал сохранять данные не отвечающие определенному условию?

iving ()
Ответ на: комментарий от iving

я не могу найти нормального руководства, может вы направите меня на «путь истинный»?

Путь:
1) http://begin-english.ru/samouchitel
2) http://www.openldap.org/doc/admin24/quickstart.html
3) http://itdavid.blogspot.ru/2012/05/howto-centos-6.html
3.5) http://www.zytrax.com/books/ldap/ несмотря на заявления скрипача (глав. контрибутора OpenLDAP) ничего криминального мой (admittedly нубский и непрофессиональный) взгляд там не нашел.
4) http://www.openldap.org/doc/admin24/
5) На самом деле пути нет. Если начинаешь с нуля, необходимо впитывать много различной инфы из большого кол-ва источников. Иногда даже дающих не очень корректную информацию. Судя по вопросам, ты в самом начале пути. И он будет ухабистым.

mos ★★☆☆☆ ()

Все эти руководства я уже видел, это первое, что находится в поисковиках, но ответов на свои вопросы я там не нашел. К примеру, как создать свой SYNTAX в них нет вообще ни слова :(

iving ()
Ответ на: комментарий от iving

Я не могу понять, где slapd берет информацию

а. в конфигурационном файле
б. в базе, которую вы заполнили

в каком поле хранится пароль?

По-моему, ответ очевиден

userPassword: hello


Вот если я, к примеру, создам свой objectClass с атрибутом userPassword он будет работать?

Если вы все сделаете правильно - будет. Но
а. начинать создавать свои схемы вам очень рано, ибо вы мало знаете
б. создавать свои схемы и objectclass'ы не нужно (тут есть исключения но они пока не для вас) - нужно пользоваться теми, что есть. Их много.

И вообще, могу я создать свой атрибут, в котором будут храниться данные в определенном формате

Можете, но форматы вы можете выбирать только из имеющихся.

например телефонный номер: (ххх) ххх-хх-хх

Для телефонного номера уже есть аттрибут и формат.

чтобы сервер не давал сохранять данные не отвечающие определенному условию?

Он и так не дает, другое дело, что вам это не нравится, вы хотите по-своему.

zgen ★★★★★ ()
Последнее исправление: zgen (всего исправлений: 1 )
Ответ на: комментарий от iving

либо я не понимаю, либо ты несешь что-то совсем нубское.
простым языком: в лдапе ты не кликаешь мышкой и не нажимаешь 'создать новый атрибут - тип строка - название Телефон'
ldap это не regedit.
делается это не так. стоит наверное почитать о базах данных вообще.
а для написания своих схем потребуется ldap-fu 80го левела +/-

mos ★★☆☆☆ ()
Ответ на: комментарий от zgen

И вообще, могу я создать свой атрибут, в котором будут храниться данные в определенном формате

Можете, но форматы вы можете выбирать только из имеющихся.

То есть это принципиальное ограничение сервера OpenLDAP или вообще любого сервера LDAP?

в каком поле хранится пароль?

По-моему, ответ очевиден
userPassword: hello

На самом деле ответ не очевиден, я не говорил серверу, что пароль хранится именно в этом поле, он мог бы хранится, к примеру в поле с именем password или pass.

Вы не поймите неправильно, я не докапываюсь, просто мне очень сложно разбираться с программами в которых я не понимаю ограничений самой реализации. К примеру в SQL есть определенные типы данных, они заранее оговорены, и вы, если создаете базу данных, то оперируете тем, что есть. Для пользователей там есть отдельная таблица, где хранится имя и пароль (и для них известны названия полей), и как правило это ЕДИНСТВЕННЫЙ ВОЗМОЖНЫЙ ВАРИАНТ. Здесь же в официальных руководствах никакие ограничения не упоминаются, вроде как и core.schema можно не подключать, то-есть вроде как подразумевается, что я могу полностью управлять и атрибутами и поведением, но потом оказывается, что это не совсем так...

iving ()
Ответ на: комментарий от iving

трудно даже начать с чего-то... тут столько всего, гм... оригинального.

ну вот к примеру:

я не говорил серверу, что пароль хранится именно в этом поле

представь, ты не говорил, и серверу наплевать. запиши Фамилию в userPassword а пароль в lastName. Сервер тебе ничего не скажет.

Вопрос в другом - как программы которым надо будет запрашивать эту инфу с сервера себя поведут. Подсказка - будут удивлены. И скажут «неправильный пароль». А вместо имени выведут пароль.

А как ты хотел? Это как-то к LDAP вообще отношения не имеет.

Хочешь свою схему - кто ж запрещает? Напиши. С блекджеком и этими самыми. Будет тебе всё своё. Практически без ограничений.
Ты так и не сказал только, что именно своё ты хочешь, а главное - зачем? Ты вообще представляешь, как используются серверА справочников (ldap)? На практике? Похоже что не очень. Хотя, такие вопросы что ты задаешь очень страннЫ и для SQL баз и вообще для любых компьютерных программ.

mos ★★☆☆☆ ()
Ответ на: комментарий от iving

То есть это принципиальное ограничение сервера OpenLDAP или вообще Протокола.

см.
https://tools.ietf.org/html/rfc4517#section-3.3

На самом деле ответ не очевиден, я не говорил серверу,

Очевидно, документацию вы не открывали от слова «вообще»
http://www.openldap.org/doc/admin24/security.html

14.4. Password Storage
LDAP passwords are normally stored in the userPassword attribute.

Разговаривать с человеком, который просит помощи в вопросах раскрытых в документации мне неинтересно.

zgen ★★★★★ ()
Ответ на: комментарий от zgen

Очевидно, документацию вы не открывали от слова «вообще»
http://www.openldap.org/doc/admin24/security.html

14.4. Password Storage
LDAP passwords are normally stored in the userPassword attribute.

are normally stored in the userPassword - именно это меня и смутило, словосочетание «ОБЫЧНО хранится там-то» подразумевает, что он может хранится и где-то еще (и я могу на это повлиять), и именно об этом я и спрашивал. Если бы было написано «MUST» у меня бы этот вопрос не возник.

iving ()
Ответ на: комментарий от iving

именно это меня и смутило

Если бы вы потрудились прочесть документацию, то вы бы узнали, что password management можно отдать стороннему сервису. Это написано на той же странице.

А так я вижу, вам лишь бы что-то написать. Я умываю руки.

zgen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.