Настройки маппинга JWT-токена на объект «Subject» для проверки прав доступа¶
Структура данных пользователя, по которому проверяются права доступа, представлена на рисунке.
Описание атрибутов пользователя представлено в таблице.
Описание атрибутов пользователя
| Атрибут | Тип атрибута | Описание атрибута | Настройка маппинга по умолчанию key=value |
|---|---|---|---|
| id | String | Идентификатор пользователя | docshouse.accessrights.subject.mapping.id = $.sub |
| enabled | boolean | Признак активности | docshouse.accessrights.subject.mapping.enabled = $.enabled |
| login | String | Логин пользователя | docshouse.accessrights.subject.mapping.login = $.preferred_username |
| String | Email пользователя | docshouse.accessrights.subject.mapping.email = $.email | |
| firstName | String | Имя | docshouse.accessrights.subject.mapping.firstName = $.given_name |
| lastName | String | Фамилия | docshouse.accessrights.subject.mapping.lastName = $.family_name |
| attributes | Map{String, Object} | Дополнительные атрибуты | docshouse.accessrights.subject.mapping.attributes = $.attributes |
| roles | List{String} | Список ролей | docshouse.accessrights.subject.mapping.groups = $.groups |
| groups | List{String} | Список групп | docshouse.accessrights.subject.mapping.roles = $.realm_access.roles |
В Системе предусмотрены отдельные настройки маппинга полей JWT-токена на объект вида «Subject».
Данные настройки реализованы для обеспечения дополнительной гибкости маппинга данных, получаемых из JWT-токена на пользователя, используемого в Системе для проверки прав доступа при отсутствии возможности влиять на структуру JWT-токена.
Настройки можно переопределять с использованием сервиса конфигураций (dh-configurations-service).
Настройки можно явно задать в файле «application.yaml»:
docshouse:
accessrights:
\# необязательные параметры для маппинга claim'ов из JWT в Subject
subject:
mapping:
\# <имя поля в Subject>: <JSONPath JWT>
id: $.sub
login: $.preferred_username
enabled: $.enabled
email: $.email
firstName: $.given_name
lastName: $.family_name
roles: $.realm_access.roles
groups: $.groups
attributes:
- $.attributes
- $.first_some_attr
- $.second_some_attr
