Проблема единого входа с KeyCloak (OpenID Connect)

У нас есть

  • KeyCloak (OpenID Connect)
  • 1x Богатый клиент (с java-адаптером keycloak)
  • 1x WebClient SPA (с адаптером javascript keycloak)

Оба приложения являются общедоступными и находятся в одной области, но имеют разные идентификаторы клиента. Ве хотел бы реализовать SSO (Single Sign On) рассмотрим следующий сценарий: пользователь выполняет вход с пользователем / паролем в расширенном клиенте, а расширенный клиент получает JWT (AccessToken, IdToken и RefreshToken). Теперь пользователь из Rich вызывает веб-клиент (с глубокой ссылкой), и он открывает веб-браузер. Поскольку у веб-клиента еще нет токена доступа, он перенаправляет пользователей на страницу входа в keycloak (OpenID Connect / OAuth 2.0).

Каким будет правильный способ реализации единого входа, чтобы веб-клиент автоматически аутентифицировался с учетными данными от Rich Cleint?

У нас больше нет имени пользователя и пароля после входа в систему, только токены.


person roman-mkh    schedule 04.04.2019    source источник


Ответы (1)


Я не вижу здесь проблемы. Когда пользователь из Rich вызывает веб-клиент, и он открывает веб-браузер, веб-клиент перенаправляется на keycloak, но пользователь уже вошел в систему. Пользователю не нужно снова вводить имя пользователя и пароль. Keycloak перенаправляет в ваш SPA, и вы получаете свои токены.

person andrija    schedule 09.04.2019
comment
Богатый клиент - это не веб-клиент, а просто обычное приложение Java Swing. - person roman-mkh; 10.04.2019
comment
У меня есть приложение .net framework и угловое приложение SPA, а единый вход работает нормально. Я вхожу в систему в первый раз, и второе приложение получает токены от Keycloak без имени пользователя и пароля. - person andrija; 12.04.2019
comment
andrija: Какие вызовы API keycloak вы используете для получения токена из angular SPA? - person roman-mkh; 02.05.2019
comment
Сначала я перенаправляю пользователя на URL-адрес входа, я получаю код, а затем запрашиваю токены из token_endpoint. URL-адреса находятся на хорошо известной странице конфигурации keycloak (keycloakhost: keycloakport / auth / realms {realm} / .well-known / openid-configuration). - person andrija; 03.05.2019