Как прочитать ответ утверждения Okta SAML при получении веб-приложения (поставщика услуг)

#saml-2.0 #spring-saml #okta

#saml-2.0 #spring-saml #okta

Вопрос:

Я работаю над использованием SAML2.0 и интегрируюсь с Okta. Я попытался использовать exmaple spring-security, указанный на сайте okta, и он работает нормально. Теперь я пытаюсь добавить свое веб-приложение в okat, и когда я запускаю или нажимаю на свое веб-приложение на панели инструментов okta, я хочу посмотреть, какое утверждение SAML отправляется поставщику услуг. Я хочу прочитать имя пользователя, фамилию, скажем, на странице index.jsp в моем веб-приложении.

Я вижу в своих журналах tomcat следующий напечатанный ответ.

INFO org.opensaml.common.binding.security.SAMLProtocolMessageXMLSignatureSecurityPolicyRule — Проверка подписи сообщения протокола выполнена успешно, тип сообщения: {urn: oasis:имена: tc:SAML:2.0:протокол}Ответ

Но когда я пытаюсь получить объект SecurityContextHolder.getContext().getAuthentication() в index.jsp, я получаю null.

Пользователь создается в Okta и назначается приложению. Но этот пользователь не существует в базе данных моего веб-приложения. Все, что я хочу видеть, это то, что пользователь, созданный в Okta, отправляется в мое веб-приложение. Я просто хочу прочитать метаданные, такие как firstname, lastname и т.д. Возможно ли это? Кто-нибудь пробовал это?

Мое веб-приложение уже использует проверку подлинности.

Комментарии:

1. Забыл упомянуть, что когда я вхожу в систему с существующим пользователем и пытаюсь получить доступ к index.jsp, я вижу созданный объект SecurityContextHolder.getContext().getAuthentication(), но он показывает, что он аутентифицирован с помощью casAuthentication, что очевидно. Но не уверен, как я могу прочитать данные пользователя, поступающие из Okta, перед входом в SP web app.

Ответ №1:

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

В принципе, если вы используете более 1 менеджера аутентификации, убедитесь, что имена ваших псевдонимов разные, и вы ссылаетесь на правильное имя псевдонима в компонентах saml в разделе «ссылка». Мой начал работать нормально, как только я его исправил.