Как включить ведение журнала уровня отладки или трассировки для примера приложения 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.
Нет. Я сделал @EnableWebSecurity(debug = true) предложенное там. Изменение application.properties ничего не дало.
logging.level.org.springframework.security=DEBUG посмотрите, как выглядит строка... вы включаете ведение журнала, PACKAGE это объясняется в документации spring. так logging.level.mypackagename=debugЯ создал /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. Что еще мне нужно сделать?
тогда явно что-то в ваших настройках и мы не можем воспроизвести с предоставленной информацией.
Я подозреваю, что это сработало бы, если бы я использовал Spring Boot, а это не так. Я использую пример «Конфигурация Java» как есть, и Tomcat также не изменен, поэтому я не знаю, что особенного в моей настройке. Я надеялся, что кто-то здесь может знать или иметь опыт регистрации в образце, который я использую.




У меня есть журнал для работы. Вместо добавления зависимости 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, на которые я надеялся.
Отвечает ли это на ваш вопрос? Как включить ведение журнала для Spring Security?