Настройка Keycloak

Настройка на версии keycloak >= 19.X.X

  1. Заходим консоль администрирования keycloak. Выбираем существующий или создаём новый realm.

  2. Необходимо создать нового клиента. Переходим в Clients, в открывшимся окне нажимаем create и создаем нового Client ID с именем zakroma В новом окне настройки меняем:         - Client authentication: On         - Authorization: On

  3. Настраиваем сервисный аккаунт Clients -> Zakroma -> Service Account Roles.   Нажать Assign role -> Выбрать admin -> Assign

  4. Настраиваем маппинг для пользователей Clients -> Zakroma -> Сlient Scopes -> zakroma-dedicated . Add mapper -> By configuraton -> User Attribute.         - Mapper Type: User Attribute              - Name: username-mapper         - User Attribute: username         - Token Claim Name: username         - Claim JSON Type: String         - Add to access token: ON

  5. Realm Settings -> Keys копируем kid и pyblic_key ключа с алгоритмом RS256 в настройки установки zakroma.

  6. Clients -> zakroma -> Credentials копируем clientSecret в настройки установки zakroma.

  7. Увеличим время жизни токена. Переходим на вкладки слева Realm Settings -> Tokens. Проставим следующее значение:

    • Access Token Lifespan: 10 minute
  8. Настройка реестра пользователей

Для тестов без LDAP

Для тестового использования возможно использовать внутренний реестр пользователей keycloak, без интеграции с ldap.

Используется при хранении пользователей в LDAP-репозитории

На вкладке User Federation -> Add new provider -> ldap


Далее заполняем значения (на примере OpenLdap):

1- `Vendor: other #other если используется OpenLdap и Active Directory если Active Directory` 2- `Connection URL: ldap://openldap.openldap.svc.cluster.local:389` 3- `Bind Type: simple` 4- `Bind DN: cn=admin,dc=demo,dc=zakroma,dc=ru` 5- `Bind Credential: xxx` 6- `Edit Mode: UNSYNCED` 7- `Users DN: ou=users,dc=demo,dc=zakroma,dc=ru` 8- `Username LDAP attribute: cn` 9- `RDN LDAP attribute: cn` 10- `UUID LDAP attribute: cn` 11- `User Object Classes: person, organizationalPerson`

и нажимаем Save.

Далее создаём маппер из Ldap в Keycloak: Mappers -> Add mapper


Создаем mapper c именем role-mapper c типом role-ldap-mapper. Общая суть сводится к синхронизации групп AD с ролями пользователей в keycloak. Пример настроек: - LDAP Roles DN: ou=groups,dc=demo,dc=zakroma,dc=ru - Role Name LDAP Attribute: cn - Role Object Classes: groupOfUniqueNames - Membership LDAP Attribute: uniqueMember - Membership Attribute Type: DN - Membership User LDAP Attribute: uid - Mode: LDAP_ONLY - User Role Retrieve Strategy: LOAD_ROLES_BY_MEMBER_ATTRIBUTE - Member-Of LDAP Attribute: memberOf - ClientID: zakroma

Создаём ещё один mapper c именем username-mapper c типом user-attribute-ldap-mapper:


1- `User Model Attribute: username` 2- `LDAP Attribute: uid`

Синхронизируем пользователей.


Возвращаемся к настройкам на вкладке User Federation -> ldap -> settings и жмем на синхронизацию всех пользователей, тут должны увидеть что пользователи были добавлены.

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

Используется для тестирования, либо нестандартной конфигурации

Создаём роли: Clients -> Zakroma -> Roles


По кнопке Create role добавить роль:         - clouduser

Создаём пользователей в Keycloak: Users -> Add user


1Username: zakromaadmin 2First name: Admin 3Last name: Zakroma

Задаём пароль: Users -> zakromaadmin -> Credentials -> Set password


        - Temporary: off

Назначаем роль: User -> zakromaadmin -> Role mapping -> Assign Role


Переключить в режим Filter by Clients -> в поиске написать “zakroma”         - clouduser