如何为 Spring Security SAML 示例应用程序启用调试日志记录?

How do I enable debug logging for the Spring Security SAML sample app?

如何为 Spring 安全 SAML 示例应用程序打开调试或跟踪级别的日志记录?具体来说,我想记录这个非 Spring 引导“Java 配置”saml2/login 示例应用程序:
https://github.com/spring-projects/spring-security-samples/tree/main/servlet/java-configuration/saml2/login

我正在使用 Tomcat,我希望看到它记录到 catalina.out 日志文件。如果它被记录在其他地方,我会把它带到任何地方。

我没有使用的:
我没有使用 /servlet/spring-boot/java/saml2.
下的 Spring 引导示例 我没有使用旧的生命周期结束 Spring 安全 SAML 扩展:
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 class 我在这个注释中设置了调试:

@EnableWebSecurity(debug = true)

现在,通过这两项更改,我确实获得了一些日志记录。但是,我想要更多。这不会给我任何 SAML 详细信息。我想查看 SAMLRequest 和 SAMLResponse 的详细信息。我想查看用户是谁及其属性,以及任何错误。

例如,在浏览器中 Spring 在 IdP 登录后,安全性正在响应一个显示“凭据无效”的页面,但没有任何关于它的记录,即使 debug = true放。在浏览器中查看来自 IdP 的 SAMLResponse xml,IdP 很高兴并且没有报告无效凭据。事实证明我有一些旧的会话 cookie 令人困惑,删除我的 cookie 清除了错误,但如果能在日志中看到一些关于它的信息就好了。

Spring 安全 SAML 使用 OpenSAML,所以我需要打开的可能不是 Spring 安全日志记录,而是 OpenSAML。

我开始记录工作了。我没有添加 slf4j 依赖项,而是将 logback 添加到 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 详细信息。