Я занимаюсь разработкой SPA и хотел бы иметь SSO.
Как я понял до сих пор, OAuth2 с OIDC - лучшее решение для SPA SSO.
Лучше, чем, например, SAML.
Пока я не понял, как использовать токен авторизации в JS-коде SPA для обработки авторизации на различных ресурсах SPA. Например, я хотел бы, чтобы пользователи с ролью «покупатель» имели доступ к вкладке истории покупок, к которой другие пользователи не будут иметь доступа.
Должен ли я анализировать токен доступа, полученный с сервера авторизации, в коде JS и проверять, имеет ли пользователь подходящую роль для просмотра вкладки, или это решение должно приниматься на стороне сервера (API), и в этом случае код SPA будет просто читать ответ от API и на основе чего настраивать пользовательский интерфейс?
В случае первого подхода, есть ли какой-либо стандартный способ проверки (в виде некоторой библиотеки JS)?
Что касается аутентификации, какой подход лучше (более безопасный и т. Д.):
- чтобы SPA (в этот момент уже загруженный в браузер) выполнял процесс аутентификации, а на основе результата пользователь мог использовать свои защищенные функции. Фактически это псевдо-аутентификация, поскольку код находится в браузере пользователя и означает, что пользователь аутентифицирует себя для кода, который находится в его руках, то есть для себя. Имеет ли смысл эта аутентификация?
- требует, чтобы пользователь аутентифицировал себя, чтобы иметь возможность даже загружать SPA в своем браузере. Вероятно, это не архитектура SPA, поскольку бэкэнд, обслуживающий SPA, должен иметь возможность создавать обратный канал с сервером аутентификации.