Skip to main content

Roles (роли)

Модели авторизации

Модель Процесс + / -
Backend-driven JWT → roles → проверка в FastAPI + простой
+ быстрый
- логика размазана по коду
Token-driven JWT уже содержит всё → backend просто читает + без внешних запросов
- сложнее управлять динамикой
Keycloak Authorization Services Backend → Keycloak → decision + централизованная политика
+ ABAC / RBAC / rules
- сложность
- задержка

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

Роли по умолчанию

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

Область видимости ролей

В текущей версии с настройками ролей есть неявная особенность. Один из вариантов добавления scope через dedicated scopes. Перейдем в Clients -> <client name> -> Client scopes

image.png

Scope clientforsimpletest-dedicated называется так, поскольку клиент называется clientforsimpletest. Перейдем в этот scope, вкладку Scope. 

image.png

И там есть переключатель Full scope allowed. Он по умолчанию включен, но если его отключить - появляется возможность настройки видимых ролей в рамках клиента. Это дополнительный фильтр. То есть, возможно одному клиенту отправить один набор ролей пользователя, другому клиенту - другой набор. Пример:

Это именно фильтр для конкретного клиента.