Мы даем возможность приложению использовать 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:
[email protected]
objectClass:
top
person
organizationalPerson
inetOrgPerson
gosaAccount
posixAccount
shadowAccount
sambaSamAccount
[...]
uid:
usera
uidNumber:
1004
[...]
Спасибо! =D
решение1
Как создается атрибут memberOf вашего сервера LDAP? Вы проверили, что у ваших пользователей действительно есть атрибуты memberOf?
Например, в OpenLDAP memberOf заполняется только в том случае, если вы используете наложение memberof или управляете ими с помощью динамических списков.
решение2
СИТУАЦИЯ:
Проблема в том, что мы пытаемся фильтровать с помощью групп POSIX, а для этого нет специального наложения. То, что существует, — это довольно сложный и трудоемкий обходной путь, который можно наблюдать здесьГЕНЕРАЦИЯ АТРИБУТА MEMBEROF ДЛЯ POSIXGROUPS.
РЕШЕНИЕ:
Для решения этой проблемы мы реализовали простое решение, которое можно увидеть здесь...
psx-grp-flt — членство пользователя в posixGroup по отношению к pgMemberOf (memberOf)
... что по сути является следующим...
Простой скрипт Python 2.7, который сохраняет ассоциации posixGroup (POSIX Group) каждого пользователя в их атрибуте pgMemberOf (memberOf). Цель — включить фильтры поиска, как показано ниже...
МОДЕЛЬ
ldapsearch -x -H 'ldap://127.0.0.1:389' -b 'ou=persons,dc=domain,dc=abc,dc=de'
-D 'cn=admin,dc=domain,dc=abc,dc=de'
-w 'mySecretValue'
'(&(pgMemberOf=cn=certaingroup,ou=groups,dc=domain,dc=abc,dc=de)(uid=certainuid))'ПРИМЕР
ldapsearch -x -H '<OPENLDAP_URI>' -b '<PERSONS_OU>,<BASE_DN>'
-D '<ADM_USER_DN>'
-w '<ADM_USER_PASSWORD>'
'(&(pgMemberOf=cn=<PSX_GROUP_CN>,<GROUPS_OU>,<BASE_DN)(uid=<PERSON_UID>))'Этот скрипт полезен в случаях, когда у нас уже установлен OpenLDAP и мы хотим сделать фильтры доступными для групп POSIX, которые уже существуют, очень простым способом и без создания новых типов групп. Также полезен, когда невозможно установить оверлеи или когда этот процесс слишком трудоемкий или рискованный.
Спасибо! =D