Как заставить логин для каждого клиента с помощью keycloak (¿передовой опыт?) - PullRequest
0 голосов
/ 29 октября 2018

В настоящее время мы реализуем Keycloak, и мы столкнулись с проблемой, которую мы не знаем, каков наилучший способ ее решения.

У нас есть различные веб-приложения, использующие sso, и это работает нормально. Проблема, которую мы имеем, заключается в том, что когда мы выполняем вход с использованием sso в одном веб-приложении, а затем делаем то же самое в другом веб-приложении.

Изначально второе веб-приложение не знает, какой пользователь заходит (и для его использования не требуется вход в систему). При нажатии на «логин» он автоматически входит в систему (путем перенаправления на keycloak и автоматической регистрации уже зарегистрированного пользователя в другом веб-приложении). Эта вторая регистрация происходит «прозрачно» для пользователя, так как перенаправление на keycloak очень быстрое и незаметное. Такое поведение не очень удобно для пользователя.

Вопрос в том, что, учитывая, что второе веб-приложение не может заранее знать, какой пользователь обращается к сайту (если только он не активно перенаправляет его на keycloak), можно ли заставить пользователей всегда входить в систему для конкретного клиента keycloak? Под этим я подразумеваю, на самом деле, спрашивать у посетителя пользователя / pw, даже если keycloak уже знает их от других клиентов keycloak.

Заранее спасибо!

Ответы [ 2 ]

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

В листинге почты от keycloak мне дали хорошее решение, но для версии 4:

  1. в консоли администратора, перейдите в раздел Аутентификация
  2. сделать копию потока браузера
  3. в этом новом потоке отключить или удалить Cookie
  4. Перейдите в раздел Клиенты -> (ваш клиент) -> Переопределения потока аутентификации, измените поток браузера на новый поток, нажмите Сохранить. "
0 голосов
/ 31 октября 2018

Используйте конечную точку выхода из системы в качестве действия кнопки входа по умолчанию в вашем приложении и перенаправьте использование параметра URI для страницы входа, где вы используете своего конкретного клиента (конечно, вам нужна правильная кодировка URI):

https://auth-server/auth/realms/{realm-name}/protocol/openid-connect/logout?redirect_uri=https://auth-server/auth/realms/{realm-name}/protocol/openid-connect/auth?client_id=client_id&redirect_uri=.....&other_params....

=> пользователь выйдет из системы, а затем будет перенаправлен на страницу входа

...