Неверный запрос, отсутствует имя пользователя параметра после входа в keycloak saml

Я использую keycloak в качестве брокера идентификации для провайдера идентификации simplesamlphp, чтобы войти в приложение angular.

Keycloak правильно перенаправляется к провайдеру идентификации с маской входа. После входа в систему провайдер идентификации перенаправляет, как и ожидалось, на keycloak. К сожалению, я получаю следующее сообщение об ошибке (в формате JSON):

{"error":"invalid_request","error_description":"Missing parameter: username"}

У моего IdP есть пользователь, а у моего keycloak - нет, так как я не хочу хранить пользователей в keycloak дополнительно.

Моя конфигурация брокера выглядит так:  введите описание изображения здесь

Моя клиентская конфигурация такова:  введите описание изображения здесь

Я не знаком ни с SAML, ни с Keycloak, поэтому, если мне нужно предоставить какую-либо другую информацию, сообщите мне.


person Kai Schneider    schedule 25.04.2018    source источник


Ответы (1)


Хорошо, мне удалось решить эту проблему. Вот как:

Судя по всему, пока KC всегда хранит аутентифицированных пользователей локально. Есть запрос функции для варианта NO IMPORT, но он был отложен. См. Здесь: KEYCLOAK-4429

Итак, по сути, вы просто позволяете KC создать локального пользователя и автоматически связать брокерскую учетную запись с вновь созданным пользователем. Для этого вы создаете поток аутентификации с этими двумя шагами, как показано здесь: Auth Flow Обратите внимание, однако, что выполнение автосвязки доступно только с KC 3.5, поэтому JBOSS SSO 7.2 (на основе KC 3.4), скорее всего, не будет поддерживать это.

Затем вы используете этот поток в конфигурации вашего поставщика удостоверений в качестве первого потока входа.

В следующий раз при входе в систему через внешний IdP KC создаст нового пользователя и свяжет его с пользователем, используемым во внешнем IdP. Созданный пользователь затем будет использоваться с вашим клиентом.

Еще две вещи:

  • Вы можете настроить сопоставители с вашим поставщиком удостоверений для автоматического импорта атрибутов из утверждений прямо новому созданному пользователю KC. Затем вы можете настроить Mappers с вашим клиентом для передачи этих атрибутов в качестве дополнительных утверждений (в моем случае мне понадобился UID, полученный через SAML).
  • Вы можете настроить федерацию пользователей в своей области, например добавив соединение LDAP, и в этом случае KC не только создаст нового пользователя по умолчанию, но и правильно автоматически импортирует указанного пользователя через LDAP и затем свяжет его с вашим пользователем IdP.
person Angry Scientist    schedule 06.02.2019