#javascript #reactjs #npm #single-sign-on #openid-connect
#javascript #reactjs #npm #единый вход #OpenID-connect
Вопрос:
Я хочу интегрировать в свое приложение всех возможных поставщиков удостоверений, таких как Auth0 SSO OIDC, Onelogin SSO OIDC, Google SSO OIDC и т. Д., И список будет продолжаться.
Так можно ли это использовать для достижения этой цели?
Ответ №1:
Обычный процесс заключается в:
- Выберите сервер авторизации (AS), например Okta
- Ваши приложения взаимодействуют только с AS
- AS управляет подключениями к IDPS для вас
Ваши приложения используют библиотеку безопасности, когда они взаимодействуют с AS:
- API-интерфейсы могут использовать JOSE для проверки токенов доступа JWT и получения открытых ключей из AS
- В React SPA может использоваться другая библиотека, например, упомянутая вами Okta — подробнее об этом в ближайшее время
Хорошая цель — сохранить код приложения на основе стандартных сообщений OAuth, чтобы вы могли переключить AS на другой с нулевыми или только незначительными изменениями кода. Библиотека Okta выглядит здесь хорошо — похоже на oidc-client.
Поставщики удостоверений
Система Okta и ее библиотека довольно стандартны, но, к сожалению, не все IDP. Поэтому, если вы используете библиотеку Okta для подключения к OneLogin или Google, вы, вероятно, обнаружите несовместимости и проблемы. Если вы используете AS, он справится с этим за вас.
Требования
Если вы создаете React SPA, вам также следует уточнить поведение, которое вы хотите в браузере:
- Библиотека Okta использует традиционный поток SPA и сохраняет токены в браузере. Единственный способ обеспечить его надежную работу — хранить токены обновления в локальном хранилище, и это не считается самым безопасным вариантом.
Более безопасный подход (но также и более сложный процесс) см. В Моем сообщении в блоге Token Handler.
В любом случае, мы надеемся, что все вышесказанное предоставит вам некоторую полезную информацию для вашего собственного технического выбора.
Ответ №2:
попробуйте использовать общий SDK вместо того, который предоставляется конкретным поставщиком удостоверений, если вы хотите поддерживать несколько IDPL.
вот пример: https://github.com/IdentityModel/oidc-client-js