Существует ли стандартная схема для социального входа в систему на основе OIDC с IDaaS? - PullRequest
0 голосов
/ 08 ноября 2018

Сценарий: социальный вход на базе openid-connect для SPA.

Дело 1: В случае SPA, который зарегистрирован в качестве клиента OAuth 2.0 с провайдером социальной аутентификации (например, Google), роли OAuth / OIDC отображаются следующим образом:

  • Владелец ресурса = Аутентифицирующийся пользователь
  • Клиент = SPA
  • Сервер авторизации = Поставщик социальной аутентификации (например, Google)
  • Сервер ресурсов = поставщик социальной аутентификации (например, Google)

Дело 2: Теперь давайте рассмотрим случай социальной аутентификации для SPA, использующего IDaaS (например, Okta / Auth0). IDaaS зарегистрировала клиента OAuth 2.0 у провайдера социальной аутентификации (например, Google), а SPA зарегистрировал клиента OAuth 2.0 с IDaaS.

Вопрос: Является ли этот вариант использования комбинацией двух потоков OIDC (вложенных?)

Поток 1:

  • Владелец ресурса = Аутентифицирующийся пользователь
  • Клиент = IDaaS (напр. Okta)
  • Сервер авторизации = Поставщик социальной аутентификации (например, Google)
  • Сервер ресурсов = поставщик социальной аутентификации (например, Google)

(на данный момент социальный провайдер назначил id_token (iss = Google, aud = IDaaS) для IDaaS redirect_uri)

Поток 2:

  • Владелец ресурса = Аутентифицирующийся пользователь
  • Клиент = SPA
  • Сервер авторизации IDaaS (напр. Okta)
  • Сервер ресурсов: IDaaS (напр. Okta)

(наконец, IDaaS назначил id_token (iss = IDaaS, aud = SPA) в SPA redirect_uri, и на этом этапе аутентификация в SPA завершена).

Является ли приведенное выше понимание правильным?

Кроме того, существует ли стандартный шаблон OIDC / OAuth для этого типа архитектуры, который предусматривает использование IDaaS в качестве брокера идентификации?

1 Ответ

0 голосов
/ 09 ноября 2018

Вы используете концепцию под названием OAuth 2.0 / OpenID Connect федерация . Вместо того чтобы быть стандартом, поставщики удостоверений используют эту интеграцию с внешними поставщиками удостоверений.

Случай 1 , исключительно используйте OAuth 2.0 и OpenID connect. SPA просто полагается на сервер авторизации для выдачи токенов.

В Случай 2 вы полагаетесь на внешнего поставщика удостоверений (например, - Google в вашем объяснении) для аутентификации пользователя. И если вы сравниваете свои конфигурации, вы настраиваете IDaaS в качестве клиента для Google. И тогда ваш SPA будет клиентом IDaaS.

Является ли этот вариант использования комбинацией двух потоков OIDC?

Нет, используется тот же поток OIDC. Но вместо того, чтобы SPA напрямую связывался с Google, IDaaS делает запрос (точнее, пересылает запрос) IDaaS создаст запрос авторизации и направит SPA на страницу входа Google. Это делается с помощью IDaaS, получающего зарегистрированные данные, такие как URL-адрес перенаправления, идентификатор клиента и секрет клиента.

Как клиент, вы получаете страницу входа и предоставляете учетные данные. После этого перенаправление OAuth 2.0 / OpenID Connect происходит в IDaaS (Примечание. В Google мы настроили URL-адрес перенаправления в IDaaS). IDaaS получит перенаправление и обработает его. В зависимости от используемого потока в шаге будет задействован запрос токена. Затем он переходит к обработке токена.

На этом этапе внутренне IDaaS заменит токен . Сначала он проверит выданный Google токен. Если токен действителен, IDaaS создаст новый токен с заявками, требуемыми от Google, а также для значений аудитории и эмитента, установленных на известные значения SPA.

В основном IDaaS получает оригинальный токен Google. SPA получает IDaaS созданный токен . Это тот же поток, но со средним IDaaS, работающим с внешним поставщиком удостоверений.

...