#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 в разделе «ссылка». Мой начал работать нормально, как только я его исправил.