Рейтинг:0

Как заставить Gravitee выполнять рекурсивный групповой поиск

флаг ru

Я настроил Gravitee APIM 3x (шлюз, rest-api, консоль и портал). Это работает нормально. При попытке заменить аутентификацию памяти аутентификацией LDAP (FreeIPA) я могу заставить службу регистрировать пользователей, но им не дается роль.

Причина этого в том, что он использует полное DN пользователя в поле memberUid, в котором есть только имя пользователя.

Комментарий от @abbra заставил меня осознать, что я забыл, как организованы мои группы. У нас есть набор базовых групп, назовем их ролями, эти роли являются членами разных групп. Итак, при поиске поля участника в cn=groups,cn=accounts,dc=somedomain,dc=com для групп Gravitee это будет относиться к другой группе, которая содержит член поля с полным пользователем дн.

Итак, теперь возникает вопрос, как я могу сделать групповой поиск рекурсивным в Gravitee? Возможно ли это, или мне нужно вместо этого явно добавлять каждого члена в группу?

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

04 февраля 16:27:46 somehost.somedomain.com gravitee[22030]: 16:27:46.646 [gravitee-listener-44] DEBUG o.s.s.l.u.DefaultLdapAuthoritiesPopulator — Поиск ролей для пользователя 'my_user', DN = 'uid=my_user,cn =users,cn=accounts,dc=somedomain,dc=com', с фильтром (&(objectClass=posixGroup)(memberUid={0})) в базе поиска 'cn=groups,cn=compat'
04 февраля 16:27:46 somehost.somedomain.com gravitee [22030]: 16:27:46.647 [gravitee-listener-44] DEBUG o.s.sl.SpringSecurityLdapTemplate — использование фильтра: (& (objectClass = posixGroup) (memberUid = uid = my_user, cn=users,cn=accounts,dc=somedomain,dc=com))
04 февраля 16:27:46 somehost.somedomain.com gravitee[22030]: 16:27:46.713 [gravitee-listener-44] DEBUG o.s.s.l.u.DefaultLdapAuthoritiesPopulator - Роли из поиска: []
Рейтинг:0
флаг ng

членский идентификатор атрибут по определению содержит только сам uid. Если вам нужно полное DN, вы должны использовать член атрибут в записи группы и член в записи пользователя.

Я бы посоветовал избегать использования дерева совместимости, если это возможно. Определенно не смешивайте совместимые и нормальные поддеревья. Использовать cn=accounts,dc=somedomain,dc=com в качестве базового DN, а затем используйте сп = группы для базы групп, cn=пользователи для базы пользователей.

Mogget avatar
флаг ru
Я просмотрел то, что вы написали, и понял, что то, что вы написали, правильно, и группы (не совместимые) имеют поля-члены, но в нашем случае поле является «рекурсивным», поскольку оно относится к другой группе, потому что мы пытаемся быть на основе ролей вместо добавления пользователей непосредственно в каждую группу. Итак, теперь вопрос в том, как я могу заставить раздел группы искать поле участника, и когда он находит другую группу, смотреть в нее, чтобы проверить, является ли пользователь участником. Я обновлю вопрос, чтобы отразить это.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.