Как работать с привилегиями в OAuth2 (OpenID)?
В работе с OAuth2
(в моём случае: OpenID
) у нас есть владелец ресурсов (O), провайдер аутентификации (A), сервер с ресурсами (R) и приложение (P), которое хочет эти ресурсы использовать.
Для определения того, к каким ресурсам приложение имеет доступ, используются scope
в запросе и claims
в ответе.
Я же пытаюсь реализовать обратный механизм. Моё приложение (P) разграничено по привелегиям, то есть доступ к некоторым частям приложения разрешён для пользователя (O) только при наличии тех или иных ролей / разрешений.
Главный вопрос: а где мне хрянить связку пользователь - его разрешения? Аутентификация в приложении происходит на основании принадлежности к LDAP-группе (что проверяет провайдер аутентификации (A)), но это аутентификация, а авторизация должна производиться на основании наличия ролей / разрешений.
Где мне следует хранить связку пользователей с их разрешениями? Потому что scope
предназначен для другого, а если я буду хранить данную информацию в приложении, то это получится дублирование информации, потому что пользователь уже хранится в провайдере аутентификации (A). Какая практика является наиболее распространённой и общепринятой?