Во-первых, OAuth 2.0 не определяет, как обрабатывать разрешения.Это определяет способ получения токенов доступа.Токены доступа - это секреты, которые ваш API принимает в качестве разрешений доступа (например: - сравните их с базовым заголовком аутентификации. Вместо этого теперь вы получаете токен).
Как выполнить проверку токена?У вас есть два основных варианта.Вы можете выполнить самоанализ токена ( RFC7662 ) против эмитента токена (службы идентификации).Ответ будет содержать полезную нагрузку, которая может содержать аутентифицированный конечный пользователь и данные об истечении срока действия токена.
В качестве альтернативы, если токены доступа представлены в формате JWT ( RFC7519 ), тогда ваш API может искать конкретныепретензии, отправленные в JWT (вы выполните проверку JWT, которая включает проверку подписи JWT).Претензии должны включать конечного пользователя, а также данные об истечении срока действия.
В любом случае, ваша логика разрешений может быть вызвана после извлечения необходимой информации.
Что касается аутентификации, она построена с использованием OpenID Connect и ID Token.Аутентификация будет происходить на стороне клиента (SPA, как в вашем случае).Это не зависит от вызова API.
Относительно разрешений, пользователей и отображений ролей.Если вы используете встроенное хранилище пользовательских данных, вам нужно будет сопоставить пользователя между внешней службой идентификации и внутренним хранилищем.В противном случае невозможно сопоставить пользовательские данные, которые вы получаете через токены (как описано в первой части ответа), со встроенными.Это нечто независимое от OAuth 2.0 и OpenID Connect.
Например, если пользователь не найден во внутреннем хранилище, вы можете предположить, что этот пользователь принадлежит к роли ограниченного пользователя.Кроме того, вы можете добавить этого пользователя в свою внутреннюю систему при первом получении таких данных (при проверке токена).Позже может появиться процесс назначения прав доступа для пользователя, который вошел в систему.Точные детали реализации зависят от вашего сценария.