Как получить информацию о пользователе в Spring Security SAML Sample(профиль ECP)

В настоящее время я использую проект spring-security-saml2-sample (V1.0.1) в качестве SP и Shibboleth в качестве IdP. Я реализовал профиль единого входа в Интернет и пытаюсь написать клиент ECP, чтобы профиль ECP работал. Однако я обнаружил ограниченные документы о профиле ECP в весенней безопасности (см. Главу 10.4).

Я нашел два полезных примера клиента ECP в github:

github.com/spaetow/ShibbolethECPAuthClient

github.com/DARIAH-DE/shib-http-client

После включения привязки PAOS и "ecpEnabled" в генераторе метаданных SP я написал некоторый пример клиентского кода ECP, ссылающийся на два вышеупомянутых проекта, основной поток:

  1. Отправьте запрос "localhost:8080/spring-security-saml2-sample/saml/login" с заголовком, связанным с PAOS.
  2. Получите ответ (запрос SAML) и создайте конверт SAML.
  3. Используйте новый сгенерированный конверт SAML для публикации в Shibboleth IdP ( https://exampleidp/idp/profile/SAML2/SOAP/ECP) с именем пользователя / паролем в заголовке авторизации (базовая аутентификация).
  4. Shibboleth аутентифицируется и отвечает подтверждением SAML (также конверт SAML).
  5. Отправьте утверждение SAML (конверт) SP: "localhost:8080/spring-security-saml2-sample/saml/SSO" и получите ответ.

Я думаю, что я преуспел в первых четырех шагах, Shibboleth может аутентифицировать пользователя и отправить ответ SAML. Но у меня есть некоторые проблемы на 5-м шаге. И даже некоторые примеры заканчиваются на шаге 4.

Я обнаружил, что Spring Security Saml получает 5-й запрос и пытается аутентифицировать ответ SAML так же, как профиль Web SSO. Логика находится в "org.springframework.security.saml.SAMLProcessingFilter". После анализа ответа saml и получения Аутентификации ответ будет перенаправлен на целевой URL-адрес по умолчанию "/". Логика находится в AbstractAuthenticationTargetUrlRequestHandler.handle(req,resp,authn). Таким образом, я могу получить только 302 HTTP-ответ в клиенте ECP.

Вот мои вопросы:

  1. Я хочу получить информацию о пользователе на 5-м шаге. Нужно ли мне писать другой фильтр вместо "SAMLProcessingFilter" для отправки аутентификации в качестве ответа? Или есть другие способы (я думаю, что клиент ECP не может проанализировать подтверждение SAML, полученное на шаге 4)?

  2. В этой ситуации мой клиент ECP очень любит "Rest client", потому что я не записывал в своем коде куки. Итак, после 5-го шага (после входа в систему), как я могу снова получить доступ к SP для другого ресурса? Означает ли это, что мне нужно записать файл cookie JSessionID в клиенте ECP?

  3. Является ли теория SAML SSO(WebSSO) похожей на Jasig CAS(Использовать cookie/ сессию)? Если это так, в режиме ECP, Как я могу единую подпись на двух клиентах ECP (каждый соединяется с различным SP, но SP cpnnect с тем же IdP). Или я могу сделать единый вход в клиенте ECP и браузере?

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

0 ответов

Другие вопросы по тегам