Получить все группы, членом которых является пользователь в LDAP

Я использую ApacheDS в качестве сервера каталогов, который используется в таких приложениях, как Gogs (Git-сервер, такой как GitLab). Моя идея состоит в том, чтобы создавать такие группы, как gogs-users и ограничьте вход в систему этой группой, чтобы только пользователи, которые являются членами этой группы, могли войти. Я создал groupOfNames для этого и testuser, который добавляется в группу gogs.

Тип gogs-users является groupOfNames и у него есть атрибут member который содержит DN моего пользователя (uid=testuser,ou=Users,DC=example,DC=com). Так что я могу видеть, кто является членом этой группы.

Но я хотел бы видеть все группы, в которых участвует пользователь. Когда я открываю testuser, я не вижу атрибута, который мог бы сказать мне, что он является членом gogs-users, Я помню, что проприетарная Active Directory имела атрибут под названием memberOf что было в запросе в фильтре, как (&(objectClass=inetOrgPerson)(memberOf=CN=gogs-user,DC=example,DC=com)), Это было бы именно то, что мне нужно.

Как я могу получить это в бесплатной реализации LDAP? Я не вижу иного способа, кроме определения пользовательского атрибута - который я должен был поддерживать на каждую руку. Это не хорошо, я хотел бы иметь автоматизированное решение, которое заботится об этих атрибутах.

Вещи, которые я уже пробовал

Примечание: я сделал полный сброс после каждого импорта схемы, чтобы убедиться, что на мои тесты не влияют предыдущие изменения.

1 ответ

Вот Запросы, которые пойдут в любом случае, но работают ТОЛЬКО для Microsoft Active Directory:

Разрешает всех участников (включая вложенные) группы безопасности (требуется как минимум Windows 2003 SP2):

(memberOf:1.2.840.113556.1.4.1941:=CN=gogs-user,DC=example,DC=com)

И все группы, в которые входит пользователь, включая вложенные группы

(member:1.2.840.113556.1.4.1941:=CN=UserName,CN=Users,DC=YOURDOMAIN,DC=NET))
Другие вопросы по тегам