Как включить ведение журнала отладки для примера приложения Spring Security SAML?

Как включить ведение журнала уровня отладки или трассировки для примера приложения Spring Security SAML? В частности, я хочу вести журнал для этого примера приложения saml2/login «Конфигурация Java», отличного от Spring Boot:
https://github.com/spring-projects/spring-security-samples/tree/main/servlet/java-configuration/saml2/логин

Я использую Tomcat и ожидаю, что он будет записываться в файл журнала catalina.out. Если он зарегистрирован где-то еще, я возьму его куда угодно.

Чем я не пользуюсь:
Я не использую образцы Spring Boot под /servlet/spring-boot/java/saml2.
Я не использую старое расширение SAML Spring Security, выходящее из эксплуатации:
https://github.com/spring-projects/spring-security-saml
Итак, мои зависимости Gradle используют org.springframework.security:spring-security-saml2-service-provider (а не старую org.springframework.security.extensions:spring-security-saml2-core).

Пример проекта приложения включает файл /resources/logback.xml, но, похоже, он не используется. Он уже установлен на root level = "TRACE", но ничего не регистрируется.

Я видел это в журнале Tomcat:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

Итак, я добавил эту зависимость:

implementation 'org.slf4j:slf4j-simple:1.7.30'

И для моего класса SecurityConfiguration я установил отладку в этой аннотации:

@EnableWebSecurity(debug = true)

Теперь, с этими двумя изменениями, я получаю некоторую регистрацию. Но я хочу большего. Это не дает мне никаких сведений о SAML. Я хочу видеть детали SAMLRequest и SAMLResponse. Я хочу видеть, кто пользователь, его атрибуты и любые ошибки.

Например, в браузере Spring Security отвечал страницей с надписью «Неверные учетные данные» после входа в IdP, но об этом ничего не регистрировалось, даже с установленным debug = true. Глядя на XML-файл SAMLResponse от IdP в браузере, IdP был доволен и не сообщал о недействительных учетных данных. Оказалось, что у меня были старые файлы cookie сеанса, которые что-то путали, и удаление моих файлов cookie устранило ошибку, но было бы неплохо увидеть что-то об этом в журналах.

Spring Security SAML использует OpenSAML, поэтому, возможно, мне нужно включить ведение журнала Spring Security, а OpenSAML.

Отвечает ли это на ваш вопрос? Как включить ведение журнала для Spring Security?

Toerktumlare 09.05.2022 20:33

Нет. Я сделал @EnableWebSecurity(debug = true) предложенное там. Изменение application.properties ничего не дало.

tbird 09.05.2022 20:45
logging.level.org.springframework.security=DEBUG посмотрите, как выглядит строка... вы включаете ведение журнала, PACKAGE это объясняется в документации spring. так logging.level.mypackagename=debug
Toerktumlare 09.05.2022 22:23

Я создал /resources/application.properties и добавил это безрезультатно: logging.level.root=DEBUGlogging.level.org.springframework.web=DEBUGlogging.level.org.springframework.security=DEBUGlogging.level.org.springframework.security.saml=DEBUGlogging.level.org.opensaml.xmlsec=TRACE. Что еще мне нужно сделать?

tbird 09.05.2022 22:59

тогда явно что-то в ваших настройках и мы не можем воспроизвести с предоставленной информацией.

Toerktumlare 09.05.2022 23:14

Я подозреваю, что это сработало бы, если бы я использовал Spring Boot, а это не так. Я использую пример «Конфигурация Java» как есть, и Tomcat также не изменен, поэтому я не знаю, что особенного в моей настройке. Я надеялся, что кто-то здесь может знать или иметь опыт регистрации в образце, который я использую.

tbird 09.05.2022 23:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня есть журнал для работы. Вместо добавления зависимости slf4j я добавил журнал в файл build.gradle:

implementation 'ch.qos.logback:logback-classic:1.2.11'

Затем приложение использует файл resources/logback.xml. К этому я добавил эти теги:

<logger name = "org.springframework.security" level = "DEBUG"/>
<logger name = "org.springframework.security.saml2" level = "TRACE" />
<logger name = "org.springframework.security.authentication" level = "TRACE" />
<logger name = "org.springframework.security.authorization" level = "TRACE" />
<logger name = "org.opensaml" level = "INFO" />
<logger name = "org.opensaml.saml" level = "TRACE" />

Это предоставляет детали SAML, на которые я надеялся.

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