idp инициировал sso, используя keycloak - PullRequest
0 голосов
/ 20 февраля 2019

Этот вопрос относится к области единого входа, инициированного IDL на SAML.Как POC, у меня есть два экземпляра keycloak, например, keycloak1 и keycloak2.Я хотел бы достичь следующего:

  1. Аутентификация будет выполняться на keycloak1

  2. keycloak1, а затем будет указывать на keycloak2 для доступа к клиентскому приложению keycloak2.

Для этого

a) создайте клиент saml в keycloak1 в области realm1.Если для IdP initiated SSO Name задано какое-нибудь имя без пробелов) -> скажем, keycloakclientsaml.В разделе Конфигурация конечной точки Fine Grain SAML, для URL-адреса привязки POST службы поддержки пользователей -> http://<keycloak2:port>/auth/realms/realm2/broker/saml/endpoint/clients/keycloakclientsaml

(https://www.keycloak.org/docs/latest/server_admin/index.html#idp-initiated-login)

b) нажмите на созданный выше клиент saml -> установка-> Экспорт метаданных SAML IDPSSODescriptor и сохранение в saml-metadata.xml (скажем).

c) Добавление пользователя в keycloak1, скажем user1 / user @ 123

d) В keycloak2создайте IDP (вкладка провайдеров идентификации).Импортируйте экспортированный выше saml-metadata.xml и сохраните.

e) В браузере нажмите http://<keycloak1>/auth/realms/realm1/protocol/saml/clients/keycloakclientsaml Запрос имени пользователя / pwd, введите учетные данные для URL-адреса user1

f) в браузере.теперь изменяется на

http://<keycloak2:port>/auth/realms/realm2/broker/saml/endpoint/clients/keycloakclientsaml

В экземпляре keycloak2 я получаю сообщение об ошибке:

09:20:46,775 INFO [org.keycloak.saml.validators.ConditionsValidator] (default task-6) Assertion ID_789213dd-24f9-425f-ae20-bcadef173bc6 is not addressed to this SP. 09:20:46,775 ERROR [org.keycloak.broker.saml.SAMLEndpoint] (default task-6) Assertion expired. 09:20:46,775 WARN [org.keycloak.events] (default task-6) type=IDENTITY_PROVIDER_RESPONSE_ERROR, realmId=realm2, clientId=null, userId=null, ipAddress=keycloak2, error=invalid_saml_response

Может кто-нибудь помочь здесь.

  1. Являются ли приведенные выше шаги правильными и полными.
  2. Что мне не хватает

Если требуется какая-либо другая информация, дайте мне знать.был бы рад предоставить.

1 Ответ

0 голосов
/ 07 марта 2019

Наконец-то все заработало.

Итак, вот ответ на этот вопрос:

Вставленная выше ошибка была связана с истекшим утверждением.В моем случае это было из-за того, что клиентский ключ, указанный в клиенте saml Keycloak1, не был распознан как URL keycloak2.он должен указывать на область keycloak2 (например, http://<keycloak2:port>/realms/realm2. Тогда раздел условия в ответе SAML VALIDATED на idp посредника keycloak2. (code : SAMLEndpoint.java --> handleLoginResponse method)

Если оставить этот поток здесь и для ясности, шагиподробно описано ниже:

a) создайте клиент saml в keycloak1 под realm1.Если для IdP initiated SSO Name задано какое-либо имя без пробелов) -> скажем, sso.

b) В разделе «Конфигурация конечной точки SAML мелкой зернистости» вышеуказанного клиента для привязки POST для службы подтверждения утверждений (ASC)URL -> http://<keycloak2:port>/auth/realms/realm2/broker/saml/endpoint/clients/keycloak2samlclient

(https://www.keycloak.org/docs/latest/server_admin/index.html#idp-initiated-login)

b) щелкните на выше созданном клиенте saml -> установка -> Экспортировать метаданные SAML IDPSSODescriptor и сохранить как saml-metadata.xml(скажем).

c) Добавьте пользователя в keycloak1, скажем user1 / user @ 123

d) В keycloak2 создайте IDP (вкладка провайдеров идентификации с именем saml (см. URL ASC).). Импортируйте экспортированный выше saml-metadata.xml и сохраните.

e) В keycloak2 создайте клиент saml, а в URL-адресе единого входа, инициированном IP, введите имя keycloak2clientsaml

f.) В браузере нажмите http://<keycloak1>/auth/realms/realm1/protocol/saml/clients/sso Запрашивать имя пользователя / pwd, введите учетные данные для пользователя 1

...