SSO поток с IS4 - PullRequest
       108

SSO поток с IS4

0 голосов
/ 08 мая 2018

У нас есть несколько веб-приложений, каждое из которых будет адаптировано для использования одной конечной точки аутентификации на основе IdentityServer4 и OpenId Connect.

Я хотел бы получить аргументированный совет относительно следующих (упрощенных) потоков, которые я рассматриваю.

  1. печенье

    1. Пользователь получает доступ app1 и нажимает Логин
    2. Пользователь перенаправлен на страницу входа в IdP
    3. Пользователь входит в систему и возвращается к app1
    4. app1 предоставляет ссылку на app2 , по которой пользователь нажимает
    5. app2 переносит ее на страницу входа в IdP
    6. IdP куки не истек, поэтому учетные данные пользователя не запрашиваются. Следовательно, пользователь автоматически входит в систему и возвращается в app2 .
  2. Токен аутентификация на основе:

    1. Пользователь получает доступ app1 и нажимает Логин
    2. Пользователь перенаправлен на страницу входа в IdP
    3. Пользователь входит в систему и возвращается к app1
    4. app1 предоставляет ссылку на app2 , по которой пользователь нажимает
    5. app1 перенаправляет пользователя на app2 , но также предоставляет id_token , полученный ранее из IdP (пункт 2.3 выше)
    6. app2 проверяет, что id_token является действительным, и автоматически регистрирует пользователя.

Вопросы:

  1. Какой из них лучше? (Cookies против токена «делятся»)
  2. Есть ли другой (т.е. лучше) поток, который я должен реализовать?

1 Ответ

0 голосов
/ 08 мая 2018

Поток # 2 предпочтителен, и вот почему я так считаю:

Критическим элементом в потоке # 1 является шаг 1.6, где файлы cookie app1 оцениваются на срок действия. Ключевым моментом здесь (на мой взгляд) является то, что файлы cookie должны быть привязаны к конкретному приложению, а файлы cookie app1 не должны проверяться при аутентификации пользователя app2 .

И наоборот, в потоке # 2 шаг 2.6 должен выполняться app1 (в качестве источника ссылки), поэтому app1 и провайдер идентификации соглашаются, что токен аутентификации по-прежнему действителен и app2 может продолжить использование app1 в качестве приложения отложенной аутентификации.

IdP может законно проверять (или обновлять) токен из любого приложения, в то время как cookie-файл должен управляться как специфичный для приложения (или сеанса).

3-й более идеальный метод: Каждое приложение должно иметь свой собственный контекст аутентификации из IdP , и когда app1 аутентифицируется, каждое из связанных приложений может аутентифицироваться также с теми же учетными данными пользователя. В этом шаблоне приложения могут истекать токены в разное время (например: просмотр 2 часа, но редактирование только 30 минут.) Ключом к этому подходу является то, что к учетным данным единого входа обращаются один раз, проверяют подлинность для всех контекстов приложения, а с этого момента время жизни токенов управляется для каждого приложения.

...