Синхронизация пользователей через LDAP в Keycloak
мая 14, 2021· #keycloak #аутентификацияОдин из способов подключения провайдера существующих пользователей к Keycloak – механизм, который называется User Federation. Он позволяет используя Kerberos или LDAP синхронизировать учетные записи из корпоративного хранилища. Если пользователей в хранилище много, и оргструктура организации предполагает иерархию, то это может усложнить получение (под)группы учетных записей.
Так, например, в Active Directory используются следующие сущности:
CN
= Common NameOU
= Organizational UnitDC
= Domain Component
Документация по LDAP с расшифровкой аббревиатур есть на сайте Microsoft.
В настройках LDAP провайдера необходимо указать User DN
. Самый простой вариант – когда все учетные
записи разложены по организационным единицам:
OU=Main,DC=Orgname,DC=ru
В этом случае Keycloak с легкостью найдет все учетные записи в юните, даже если внутри него есть какая-то вложенная структура. Для этого, правда, придется включить дополнительный параметр Search Scope: Subtree.
Но что делать если администраторы Active Directory вместо создания OU
сущностей добавляют нужных
вам пользователей в CN
? Другого способа, как дополнить описанное выше решение дополнительным
фильтром для LDAP, я не нашел. В настройке Custom User LDAP Filter
можно прописать все CN
группы
через оператор «Или» |
:
(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=CN=CMS_EDITOR,OU=Security,OU=Groups,OU=Central,OU=Main,DC=Orgname,DC=ru)))
В примере указана только одна группа – CMS_EDITOR
.