Походюн Александр - Ворота в пустыне

Слайд 2

Role Based Access Control, RBAC Управление доступом на основе ролей. Для

Role Based Access Control, RBAC

Управление доступом на основе ролей.
Для определения модели

RBAC используются следующие соглашения:
S = Субъект (Subject) = Человек или автоматизированный агент (множество пользователей);
R = Роль (Role) = Рабочая функция или название, которое определяется на уровне авторизации (множество ролей);
P = Разрешения (Permissions) = Утверждения режима доступа к ресурсу (множество прав доступа на объекты системы);
SE = Сессия (Session) = Соответствие между S, R и/или P
Слайд 3

JSON Web Token Токен JWT состоит из трех частей: заголовок (header);

JSON Web Token

Токен JWT состоит из трех частей:
заголовок (header);
полезная

нагрузка (payload);
подпись или данные шифрования.
Слайд 4

Пример JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHAiOiJlbm5lcmdpaWEtbXZzIiwic2NvcGVzIjozLCJoYXNoIjoiN2JjNjk1ZWU4OTU2ODhhYjI4ZTM2MjYxNDFjZmNlMWIiLCJpYXQiOjE1Njc2NTMwMzcsImV4cCI6MTU2NzY1MzkzN30.bz2ywYI1Z5cgm9b1gTI0cDGLv4DToAfWh0KGwOUVG8g header.payload.signature

Пример JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHAiOiJlbm5lcmdpaWEtbXZzIiwic2NvcGVzIjozLCJoYXNoIjoiN2JjNjk1ZWU4OTU2ODhhYjI4ZTM2MjYxNDFjZmNlMWIiLCJpYXQiOjE1Njc2NTMwMzcsImV4cCI6MTU2NzY1MzkzN30.bz2ywYI1Z5cgm9b1gTI0cDGLv4DToAfWh0KGwOUVG8g

header.payload.signature

Слайд 5

Попробуем все объединить От RBAC берем роли и разрешения и в

Попробуем все объединить

От RBAC берем роли и разрешения и в качестве

субъекта не пользователь а микросервис. Сессию заменяем на jwt токен. Метод шифрования симметричный, но ключ знает только микросервис.
Важно не забыть:
Смена ключа не должна вызывать трудностей;
В случае смены ключа или изменения роли или разрешений, токен должен быть невалидным;
Для локальной разработки все должно быть просто (иначе нафига нам, такой тюниг в саратовском зоопарке).
Слайд 6

Конфиг Объект конфигурации содержит следующие части: roles - массив ролей; permissions

Конфиг

Объект конфигурации содержит следующие части:
roles - массив ролей;
permissions - массив разрешений;
apps

- массив приложений (клиентов).
Слайд 7

Демо

Демо