Я бы посоветовал вам ограничить использование id_token только до вашего SPA. Вы можете использовать основную информацию, присутствующую в маркере идентификатора (например, имя пользователя и адрес электронной почты), для отображения информации о пользователе в вашем пользовательском интерфейсе. Если вы также можете генерировать токены доступа в виде JWT, тогда ваш API может проверять токены доступа, не обращаясь к провайдеру идентификации. Вы можете включить роли (или аналогичные) в свой токен доступа, чтобы получить информацию об авторизации в своем токене доступа.

ою систему с OIDC и OAuth 2.0 (используя Auth0), и я не уверен, как правильно использоватьid_token а такжеaccess_token, Или, скорее, я не понимаю, какие роли назначать различным службам в моей настройке.

У меня есть полностью статическое frontend-приложение (одностраничное приложение, HTML + JS, без backend), которое гарантирует, что пользователь проходит аутентификацию с использованием неявного потока против Auth0. Затем приложение-интерфейс извлекает данные из API, который я также создаю.

Теперь, что правильно?

Интерфейс SPA - это OAuthклиентское приложениеМой API-сервис - это OAuthсервер ресурсов

...или же:

Интерфейс и мой API-сервисклиентское приложение

Если и мой интерфейс, и внутренний интерфейс API можно считать клиентом, я не вижу реального вреда в использованииid_token как токен на предъявителя на запросы от моего внешнего интерфейса к моему бэкэнду - это привлекательно, потому что тогда я могу просто проверить подписанный токен на бэкенде, и у меня есть вся информация о пользователе, которая мне нужна. Однако, если мой API считаетсясервер ресурсовЯ, вероятно, должен использоватьaccess_token, но затем я должен подключаться к серверам Auth0 при каждом запросе API, чтобы как проверять токен, так и получать основную информацию о пользователе, не так ли?

я прочелэто который, кажется, предполагает, чтоaccess_token является единственным допустимым токеном для использования с моим API. Но, как я уже сказал, я не уверен в роли отдельных служб. И используяid_token заманчиво, потому что не требует сетевых подключений на сервере и содержит информацию, необходимую для извлечения нужных данных.

Как правильно это сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос