Как Keycloak определяет пользователя в новом окне браузера?

Я пытаюсь понять следующую проблему:

Есть:

  • app1.gatekeeper-test.com
  • app2.other-url.com

Эти два клиента (app1, app2) находятся в одной области (защищены двумя гейткиперами). Оба указывают на один и тот же сервер ресурсов — файлы cookie имеют полную область действия.

  1. Я вхожу как user1 в app1.gatekeeper-test.com.
  2. Я открываю app2.other-url.com в новой вкладке, она автоматически регистрирует меня как user1.
  3. Если я открою app1.gatekeeper-test.com в приватном окне, мне нужно снова войти в систему.
  4. Нет ничего глобального, и я не могу найти причину, по которой keycloak определяет пользователя.

Как это возможно? Должен быть какой-то Frontend-State-Mechanism, который позволяет Keycloak знать, что это user1, который пытается получить доступ к app2? Я весьма озадачен... (Проверено на Chrome 80.0.3987.87)


person noircc    schedule 27.08.2020    source источник


Ответы (1)


Вот как работает SSO, это UUID сеанса вашего браузера, который используется на вкладках браузера.

Как только вы перенаправляете на keycloak с новой вкладки, он обнаруживает через сеанс вашего браузера, что уже есть аутентифицированный пользователь для этого сеанса в той же области, и, следовательно, возвращает вам токен.

В окнах инкогнито у вас есть новый UUID сеанса, и, следовательно, вам нужно будет повторить механизм аутентификации, и вы получите другой токен с другим временем истечения срока действия, даже если это тот же пользователь.

person Ziko    schedule 30.08.2020