如何为Spring SecuritySAMLSample应用程序打开调试或跟踪级别日志记录?具体来说,我想要记录此非Spring Boot"JavaConfiguration"saml2/login示例应用程序:
https://github.com/spring-projects/spring-security-samples/tree/main/servlet/java-configuration/saml2/login
我正在使用Tomcat,我希望看到它记录到catalina. out日志文件。如果它记录在其他地方,我会把它带到任何地方。
我没有使用:
我没有使用Spring Boot示例,在/servlet/spring-boot/java/saml2
下。
我没有使用旧的生命周期结束的Spring SecuritySAML扩展:
https://github.com/spring-projects/spring-security-saml
所以,我的Gradle依赖项使用的是org.springframework.security:spring-security-saml2-service-Provider
(不是旧的org.springframework.security。扩展: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类,我在此注释中设置了debug:
@EnableWebSecurity(debug = true)
现在,有了这两个更改,我确实得到了一些日志记录。但是,我想要更多。这并没有给我任何SAML的细节。我想查看SAMLRequest和SAMLResponse的详细信息。我想看看用户是谁,他们的属性,以及任何错误。
例如,在浏览器中,Spring Security在IdP登录后响应了一个页面,上面写着“无效凭据”,但没有记录任何内容,即使设置了debug=true
。在浏览器中查看来自IdP的SAMLResponse xml,IdP很高兴,没有报告无效凭据。结果发现我有旧的会话cookie,这让我很困惑,删除我的cookie清除了错误,但如果能在日志中看到一些关于这一点的东西,那就太好了。
Spring SecuritySAML使用OpenSAML,所以也许我需要打开的不是Spring Security日志记录,而是OpenSAML。
我让日志记录开始工作。我没有添加slf4j依赖项,而是将logback添加到build. gradle文件中:
implementation 'ch.qos.logback:logback-classic:1.2.11'
然后应用程序使用资源/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细节。