我正在尝试将waffle-spring-security4
与现有的Spring Boot项目集成,其中大部分配置都是自动发生的。我注意到,当NegotiateSecurityFilter
在链中时,会发生一些奇怪的事情:我在使用一个String属性初始化一个完全无关紧要的类时得到ClassNotFoundException
;以前装好的Thymeleaf模板现在无法解决,依此类推。当发生这种情况时,我在链中有以下过滤器:
WebAsyncManagerIntegrationFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
CsrfFilter
LogoutFilter
NegotiateSecurityFilter
(华夫饼)BasicAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
切换回HTTP基本身份验证后,问题就会消失,所以我认为问题可能出在上面的过滤器上。你对如何解决这个问题有什么想法吗? (如果您有任何调试类似问题的策略,那就太棒了。)
答案 0 :(得分:0)
是的,它是由Waffle引起的,因为它已经证明了。
问题在于,一旦您使用Waffle成功完成身份验证,在剩余的运行中,无法访问必要的文件。这导致尝试从类路径加载某些东西的所有东西都惨遭失败。我必须在这里添加一下,我尝试使用gradle bootRun
从源代码运行它,然后构建jar并运行它;在第一种情况下,Thymeleaf决议失败,在第二种情况下,没有找到Spring类。
事实证明,如果远程用户(通过SSO登录)对文件没有读取权限,那么一旦用户通过身份验证,应用程序将无法正常工作!我不知道Waffle引起的这种环境变化,因为我不记得在文档上看到任何关于它的事情 - 但这是有道理的。在我给用户提供读取权限后,它开始工作。