Автор Тема: Создание НЕ системных пользователей с привязкой к группе.  (Прочитано 6357 раз)

belodemon

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Добрый день! Я в OpenLDAP пока только начинающий , так что прошу не судить строго. Появилась задачка авторизовать пользователей приложения которое вращается на Tomcat через LDAP, соответственно мне нужно создать ряд пользователей в  LDAP с привязкой к группе. В интернете примеры создания системных пользователей с использованием обьектов класса objectClass: posixAccount для которого обязательны $ uid $ uidNumber $ gidNumber $ homeDirectory. Может кто посоветуете как создавать пользователей с привязкой к группе без необходимости указания как миннимум homeDirectory? ведь пользователи не будут системными. Буду очень признателен за примеры ldif.
То есть алгоритм сводится к
1. Описать группу в лдап
2. Создать (Не системного) пользователя и привязать к этой группе.
Спасибо!
« Последнее редактирование: 25 Апрель 2018, 18:35:58 от belodemon »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте!

Самый простой вариант учётки для аутентификации -- запись на объектном классе person (обязательные атрибуты cn, sn):
dn: cn=ivanov,ou=People,dc=mycompany,dc=ru
objectClass: person
cn: ivanov
sn: Ivanov
userPassword: ivanovPassword

Если нужен атрибут uid, то можно добавить вспомогательный объектный класс uidObject (обязательный атрибут uid):
dn: uid=petrov,ou=People,dc=mycompany,dc=ru
objectClass: person
objectClass: uidObject
uid: petrov
cn: Petr Petrov
sn: Petrov
userPassword: petrovPassword

Стандартная группа на объектном классе groupOfNames (обязательные атрибуты cn, member):
dn: cn=Website Users,ou=Groups,dc=mycompany,dc=ru
objectClass: groupOfNames
cn: Website Users
member: cn=ivanov,ou=People,dc=mycompany,dc=ru
member: uid=petrov,ou=People,dc=mycompany,dc=ru

Егор

belodemon

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Егор! Спасибо! Благодаря вашему топику я решил ищью! Но есть идея пойти по-другому пути, в Вашем примере группа вяжется к пользователю, то-есть это с одной стороны Юникс путь, с другой стороны при создании пользователя нужно будет помнить о группе в которую его следует добавить. Что если при создании пользователя привязывать его сразу же к группе, по dn например? Как Вы считаете, можно ли такое реализовать? Например, что если member: group dn должно присутствовать в ldif пользователя а не группы? Как такой лдиф должен выглядеть? Буду очень спасибо ! :) П.С. Лень всегда побеждает ;)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте. То, что Вы хотите, можно реализовать с помощью динамических групп или автогрупп, в зависимости от того, как Tomcat делает выборку из LDAP. Но тут требуется перенастроить OpenLDAP, то есть нужен к нему доступ. О динамических группах я писал здесь, а про автогруппы и их отличие от динамических групп -- здесь и далее здесь. Попробуйте разобраться, если будут вопросы -- пишите.

Егор

belodemon

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Да! Спасибо! То что нужно!

dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

dn: ou=Logins,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: Logins

dn: ou=Roles,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: Roles

dn: uid=Users,ou=Roles,dc=example,dc=com
objectClass: extensibleObject
objectClass: top
objectClass: inetOrgPerson
objectClass: uidObject
sn: Users
cn: Users
uid: Users
distinguishedName: uid=Users,ou=Roles,ou=Roles,dc=example,dc=com

dn: uid=guest1,ou=Logins,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
objectClass: extensibleObject
cn: guest1
sn: guest1
uid: guest1
member: uid=Users,ou=Roles,dc=example,dc=com
distinguishedName: uid=guest1,ou=Logins,dc=example,dc=com
userPassword: {SSHA}*******************************

dn: uid=Administrators,ou=Roles,dc=example,dc=com
objectClass: extensibleObject
objectClass: top
objectClass: inetOrgPerson
objectClass: uidObject
sn: Administrators
cn: Administrators
uid: Administrators
distinguishedName: uid=Administrators,ou=Roles,dc=example,dc=com

dn: uid=Admin,ou=Logins,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
objectClass: extensibleObject
cn: Admin
sn: Admin
uid: Admin
member: uid=Administrators,ou=Roles,dc=example,dc=com
distinguishedName: uid=Admin,ou=Logins,dc=example,dc=com
userPassword: {SSHA}*********************

Все получилось, таким образом guest1 входит в группу Users , а Admin в Administrators. Спасибо за помощь!
« Последнее редактирование: 04 Май 2018, 10:29:04 от belodemon »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Здравствуйте ещё раз. Не совсем понимаю, как я помог своим предыдущим ответом, ведь там говорилось об динамическом поддержании членства в группах на основании каких-либо признаков из учётной записи пользователя. Вы же просто добавили атрибут member в саму учётку. Но если это действительно то, что Вам было нужно, то OK, рад, что Вы решили задачу.

Егор

belodemon

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Егор, действительно помогли ;) по одной из ваших ссылок увидел атрибут member, до этого перелопатил офф доки, кстати получилось не томкета а джибоса... там два подхода, principal-to-group and group-to-principal, меня заинтересовал principal-to-group, мне показалось легче сделать шаблон на добавление пользователя чем на добавление пользователя и добав пользователя в группу..