Мы разрешаем приложению использовать LDAP.
В конфигурации приложения нам необходимо указать URL-адрес для подключения к LDAP. В настоящее время мы предоставляем следующий URL-адрес ...
ldap://10.2.0.5:389/dc=domain,dc=abc,dc=de?uid
ВОПРОС: Нам нужно добавить фильтр к указанному выше URL-адресу, чтобы находились только пользователи, принадлежащие к группе «accessgroup», чтобы ограничить доступ к приложению только пользователи, принадлежащие к этой группе.
То есть что-то похожее на это ...
curl "ldap://10.2.0.5:389/dc=domain,dc=abc,dc=de?uid?sub?(&(memberof=cn=accessgroup,ou=groups,dc=domain,dc=abc,dc=de)(uid=%s))"
Мы перепробовали сотни настроек, но ничего не работает ... = |
ГРУППА
cn:
accessgroup
gidNumber:
1004
memberUid:
usera
userb
userc
userd
usere
userf
userg
userh
useri
objectClass:
top
posixGroup
ПОЛЬЗОВАТЕЛИ
cn:
User Letter A
gecos:
User Letter A
gender:
M
gidNumber:
544
givenName:
User
gotoLastSystemLogin:
01.01.1970 00:00:00
homeDirectory:
/home/usera
loginShell:
/bin/bash
mail:
user.letter.a@domain.abc.de
objectClass:
top
person
organizationalPerson
inetOrgPerson
gosaAccount
posixAccount
shadowAccount
sambaSamAccount
[...]
uid:
usera
uidNumber:
1004
[...]
Спасибо! = D
СИТУАЦИЯ:
Проблема в том, что мы пытаемся фильтровать с помощью групп POSIX, и для этого нет специального наложения. Существует довольно сложный и трудоемкий обходной путь, который можно увидеть здесь ГЕНЕРАЦИЯ АТРИБУТА ЧЛЕНА ДЛЯ POSIXGROUPS.
РЕШЕНИЕ:
Чтобы решить эту проблему, мы реализовали простое решение, которое можно увидеть здесь...
psx-grp-flt - членство пользователя в posixGroup против pgMemberOf (memberOf)
... которое в основном выглядит следующим образом...
Простой скрипт Python 2.7, в котором хранится posixGroup каждого пользователя (POSIX Group) в их атрибуте pgMemberOf (memberOf). То цель состоит в том, чтобы включить поисковые фильтры, как показано ниже...
MODEL
ldapsearch -x -H 'ldap://127.0.0.1:389' -б 'ou=persons,dc=domain,dc=abc,dc=de'
-D 'cn=admin,dc=domain,dc=abc,dc=de'
-w 'мое секретное значение'
'(&(pgMemberOf=cn=certaingroup,ou=groups,dc=domain,dc=abc,dc=de)(uid=certainuid))'ПРИМЕР
ldapsearch -x -H '
' -b ' , '
-D ''
-w ''
'(&(pgMemberOf=cn=, , ))' Этот сценарий полезен в случаях, когда у нас уже есть OpenLDAP установлены, и мы хотим сделать фильтры доступными для групп POSIX, которые уже существует очень простым способом и без создания новых типов группы. Также полезно, когда невозможно установить оверлеи или когда процесс слишком трудоемкий или рискованный.
Спасибо! =D
Как создается атрибут memberOf вашего сервера LDAP? Проверяли ли вы, действительно ли у ваших пользователей есть атрибуты memberOf?
Например, в OpenLDAP memberOf заполняется только в том случае, если вы используете наложение memberof или управляете ими с помощью динамических списков.