В соответствии с современными рекомендациями, SPA должен использовать поток кода авторизации с PKCE ( черновик из лучших практик rf c). Поэтому, пожалуйста, учтите это при использовании OAuth с вашим SPA.
Что касается ваших сомнений, вот ваш клиент и аудитория
- Клиент - Ваш SPA
- Аудитория Идентификационный токен - Ваш SPA
- Аудитория Маркер доступа - Внутренний веб-API
Обоснование:
Это ваш SPA, который завершает поток OAuth и получает токены. И, как я уже сказал, он должен следовать за PKCE в качестве текущей рекомендации (для этого достаточно библиотек). Таким образом, с точки зрения сервера авторизации, клиент - это ваш SPA.
Что касается идентификатора токена, он предназначен для использования вашим SPA. После проверки подлинности SPA аутентифицируйте конечного пользователя. Таким образом, целевой аудиторией является SPA.
Маркер доступа предназначен для использования в вашей бэкэнде вашим SPA. Как только он получает запрос API, он должен проверить, что аудитория маркера доступа содержит идентификатор, нацеливающий себя (например: - Если JWT, утверждение, содержащее backdene identifeir. Или, если самоанализ токена, resposne, содержащий идентификатор). Обычно ваш сервер авторизации позволяет вам регистрировать такие аудитории, и ваш запрос на авторизацию может иметь заданный параметр аудитории (например: - Azure использовать этот подход). Но это особенности реализации.