можем ли мы использовать okta sdk для всех поставщиков удостоверений?

#javascript #reactjs #npm #single-sign-on #openid-connect

#javascript #reactjs #npm #единый вход #OpenID-connect

Вопрос:

Я хочу интегрировать в свое приложение всех возможных поставщиков удостоверений, таких как Auth0 SSO OIDC, Onelogin SSO OIDC, Google SSO OIDC и т. Д., И список будет продолжаться.

Так можно ли это использовать для достижения этой цели?

https://github.com/okta/okta-auth-js

Ответ №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