Skip to main content

Теория

https://www.youtube.com/watch?v=uq2I9z_ZB6Q

image.png

Прослойка, объединяющая технологии авторизации.

Функциональность:

  • Single-sign on, Single-sign out для браузерных приложений
  • Поддержка OpenID/OAuth 2.0/SAML
  • Identity Brokering - аутентификация с помощью внешних провайдеров, Social login
  • User federation - синхронизация с LDAP / Active directory / Kerberos
  • Консоль администратора

Блоки keycloak

Realm

Деление на блоки через realm. Каждый realm изолирован, пользователь принадлежит только одному realm. Содержит конфигурацию, набор приложений и пользователей. Есть административный и остальные realm.

Есть консоль управления реалм и консоль управления аккаунтом.

Клиенты (clients)

Клиенты - сущности, которые могут отправлять запрос в Keycloak на аутентификацию пользователя. Есть встроенные клиенты. Эти встроенные клиенты создаются автоматически для каждого realm.

Области видимости клиентов (client scopes)

Определяет данные и разрешения, получаемые клиентом в access token / ID token при аутентификации пользователя.

Роли (realm roles)

Каждая роль может быть переключена в композитный режим (объединение других ролей).

Название Композитная Назначение
admin Да включает административные права - может управлять пользователями, клиентами, ролями и конфигурацией реалма
create-realm Нет позволяет пользователю создавать новые realms через Admin Console или REST API (только в master realm).
default-roles-master Да набор ролей, назначаемых по умолчанию всем новым пользователям master realm.
Включает offline_access, uma_authorization и другие (можно посмотреть внутри composite).
offline-access Нет дает возможность получать offline refresh tokens - живут дольше, не требуют активной сессии пользователя.
uma_authorization Нет позволяет использовать User-Managed Access (UMA) - механизм, при котором пользователь может делегировать доступ к своим ресурсам другим пользователям (используется при ресурсно-ориентированном доступе).

 

Консоль управления сервером

Доступ: ip_keycloak:8080/admin

Группы (организационная принадлежность) и роли (набор разрешений). Когда пользователь добавляется в группу, он наследует все роли. Единственная задача keycloak: Пользователь - Разрешение. Внутри роли сопоставляется разрешение. Группа упрощает управление пользователями.

Области видимости клиентов (client scopes)

Определяет данные и разрешения, получаемые клиентом в access token / ID token при аутентификации пользователя. Типы:

  • Default Этот scope всегда включается в токен по умолчанию, даже если клиент не запрашивает его явно.
  • Optional Scope будет применён только если клиент его запросит в параметре scope=... при авторизации.
  • (Unassigned) Scope не применяется клиенту вообще, пока его не назначат вручную или не укажут явно в токене.

Стандартные scopes: 

НазваниеТипПротоколНазначение
acrDefaultOpenID Connectдобавляет в токен acr (Authentication Context Class Reference) - уровень аутентификации (например, MFA, пароль и т. д.).
addressOptionalOpenID Connectдобавляет адрес пользователя (address claim) в токен (если заполнено в профиле).
basicDefaultOpenID Connectвключает базовые claims - sub, name, preferred_username, given_name, family_name
e-mailDefaultOpenID Connect

добавляет email и email_verified claims в ID и Access токены

microprofile-jwtOptionalOpenID Connect

обеспечивает совместимость с Eclipse MicroProfile JWT - популярным стандартом для Java microservices

offline_accessOptionalOpenID Connect

разрешает выдачу offline refresh token (живёт долго и используется без пользовательского взаимодействия).

role_listDefaultSAML

включает список ролей (roles) пользователя в SAML assertions

rolesDefaultOpenID Connect

добавляет роли пользователя (realm roles и client roles) в access token (в realm_access.roles и resource_access)

Также есть phone, profile