Я создаю сервер авторизации OAuth 2 с помощью Spring Boot 2. Я хочу ограничить области, которые клиенту разрешено запрашивать не только по конфигурации клиента, но и согласно полномочиям авторизующего пользователя.
Допустим, клиент client1
может запросить область действия scope_edit
.Я хочу, чтобы пользователь с полномочиями ROLE_EDITOR
мог авторизовать запрос для этой области.Но если пользователь имеет только права доступа ROLE_READER
, запрос должен быть отклонен автоматически.Без этого пользователь может потенциально предоставить клиенту более высокие привилегии, чем он сам.
Чтобы усложнить ситуацию, я хочу проверить это еще раз, когда токен обновления используется для получения нового токена доступа, в случае, если пользовательбольше не редактор.
Кажется, это стандартная вещь, но из моего прочтения источника ключевых классов, таких как AuthorizationEndpoint
, требуется замена большого количества стандартного кода Spring.Аргументы для OAuth2RequestValidator.validateScope
не содержат информации об аутентифицированном пользователе.Существует ли стандартный подход Spring?