LDAP — добавьте фильтр к URL-адресу LDAP, чтобы доступ к приложению могли получить только пользователи, принадлежащие к определенной группе.

LDAP — добавьте фильтр к URL-адресу LDAP, чтобы доступ к приложению могли получить только пользователи, принадлежащие к определенной группе.

Мы даем возможность приложению использовать 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

Связанный контент