Я строю систему с OIDC и OAuth 2.0 (используя Auth0), и я не уверен, как правильно использовать id_token
и access_token
. Вернее, я смущен тем, какие роли назначать различным службам в моей настройке.
У меня есть полностью статическое приложение-интерфейс (одностраничное приложение, HTML + JS, без бэкэнд), которое гарантирует, что пользователь аутентифицируется с использованием неявного потока с Auth0. Интерфейс-приложение затем извлекает данные из API, который я также создаю.
Теперь, что правильно?
- Frontend SPA является клиентским приложением OAuth
- Моя служба API - это сервер ресурсов OAuth
...или же:
- Интерфейс и мой API-сервис - это как клиентское приложение
Если и мой интерфейс, и бэкэнд-API можно считать клиентом, я не вижу реального вреда в использовании id_token
в качестве токена-носителя на запросах моего интерфейса на моем бэкэнд - это привлекательно, потому что тогда я могу просто проверить подписанный токен на бэкэнд, и у меня есть вся информация о пользователе, который мне нужен. Однако, если мой API считается сервером ресурсов, я должен, вероятно, использовать access_token
, но тогда мне нужно подключиться к серверам Auth0 по каждому запросу API, чтобы проверить токен и получить базовую информацию о пользователе, не так ли?
Я прочитал это, что, похоже, предполагает, что access_token
является единственным допустимым токеном для использования с моим API. Но, как я уже сказал, я не уверен в роли отдельных услуг. И использование id_token
заманчиво, потому что он не требует сетевых подключений на бэкэнд и содержит информацию, необходимую для извлечения правильных данных.
Каков правильный путь?