Keycloack

Общий принцип работы:

Обрабатывает входящие данные пользователя, осуществляет процедуры входа и регистрации, выдаёт токены - access и id, управляет группами пользователя, его правами, доступом к ресурсу
В представленном варианте - Keycloack в роли IdP общается с IdM и получает необходимые данные о пользователе, его правах в системе, ролях и т.п. После чего заносит в свою таблицу ассоциацию этого пользователя и его прав

Система IdP для централизованного входа (SSO). Выдаёт API ключи - access_token, JWT токены с id_token, реализует все типы входа с OAuth 2.0 и поддерживает OIDC.
При работе с mTLS аутентификация проходит на стороне сервера. Например, IAM Proxy. После чего, IAM отправляет заголовки к Keycloack и получает авторизационные данные для входа на сервер - доступы, группы, уникальный UUID или ID


Manage Relams - создание новых пространств. По сути, один сервер keycloack может содержать в себе сразу несколько IdP. Обычно это используется для тестирования - realm master, test, prod


Clients - тут регистрируются новые приложения. Указываем имя, client-id

Client Authorization - здесь выбираем - будет ли проходить аутентификация на публичном, или на серверном приложении
Authorization - если выключено, то сервер Keycloack просто передаёт права в scope. Если же параметр включён, то сервер ресурсов перед каждым запросом пользователя к какому-либо ресурсу обращается к Keycloack, где на основе прав Keycloack выдаёт разрешение или запрет на операцию. Более централизованный вариант, но существенно повышает нагрузку на систему
Authorization Flow - подробнее в OAuth 2.0


Keys - Каждый клиент имеет настройки JWKS - JSON Web Keys Set - массив открытых ключей для проверки токенов JWT на корректность. Можем сгенерировать на стороне Keycloack - там останется публичный ключ, а потом автоматически скачаем закрытый ключ, который будет использовать клиент для шифрования JWT. Также можно указать ссылку, по которой клиент хранит JWKS


Credentials - можно посмотреть секретные ключи приложения - с которым он будет обращаться к Keycloack и registration access token - для управления этим клиентом в процессе работы


Roles - здесь можно создать свои роли и дать им наследуемые роли внутри самого Realm (Associated roles) - управление пользователями Realm, удаление и добавление аккаунтов, просмотр клиентов и т.д.


Client scopes содержит передаваемые параметры в OIDC, такие как: id, address, name, email, birthday и т.д. Устанавливаются все scope внутри Realm в глобальном разделе Client scopes, но для каждого Client могут устанавливаться только некоторые из всего списка


Client scopes - здесь ведётся настройка полей, которые могу включать в себя Clients

Здесь можно добавить предустановленные scope, или же создать абсолютно новые - в зависимости от потребностей приложения


Realm roles - роли для управления пространствами

Здесь можно создавать управлять ролями пользователя для взаимодействия с Realm - создание, удаление, оффлайн токены. Также можно создать свою роль. Уже этим ролям можно добавлять ассоциативные роли от master-realm, account, broker, test, в зависимости от потребностей роли в управлении пространствами


Users - здесь можно добавлять новых пользователей, управлять ими, менять креды, выдавать группы, роли, права, привязывать к клиентам, управлять сессиями и просматривать события!