0

我正在尝试waffle-spring-security4与现有的 Spring Boot 项目集成,其中大部分配置是自动发生的。我注意到当NegotiateSecurityFilter在链中时,会发生一些奇怪的事情:我开始ClassNotFoundException使用一个 String 属性初始化一个完全微不足道的类;以前加载正常的 Thymeleaf 模板现在无法解析等等。发生这种情况时,我在链中有以下过滤器:

  1. WebAsyncManagerIntegrationFilter
  2. SecurityContextPersistenceFilter
  3. HeaderWriterFilter
  4. CsrfFilter
  5. LogoutFilter
  6. NegotiateSecurityFilter(由华夫饼)
  7. BasicAuthenticationFilter
  8. RequestCacheAwareFilter
  9. SecurityContextHolderAwareRequestFilter
  10. SessionManagementFilter
  11. ExceptionTranslationFilter
  12. FilterSecurityInterceptor

切换回 HTTP 基本身份验证后,问题就消失了,所以我认为问题可能出在上面的过滤器上。您对如何解决此问题有任何想法吗?(如果您有任何调试类似问题的策略,那就太好了。)

4

1 回答 1

0

是的,它是由华夫饼引起的,事实证明。

问题是,一旦您使用 Waffle 成功完成身份验证,在接下来的运行中,就无法访​​问必要的文件。这导致所有试图从类路径加载某些东西的东西都惨遭失败。我必须在这里补充一点,我已经尝试gradle bootRun通过构建 jar 并运行它来从源代码运行它;在第一种情况下,Thymeleaf 解析失败,在第二种情况下,找不到 Spring 类。

事实证明,如果远程用户(通过 SSO 登录)没有文件的读取权限,一旦用户通过身份验证,应用程序将根本无法正常工作!我不知道华夫饼引起的这种环境变化,因为我不记得在文档上看到过任何关于它的内容 - 但这是有道理的。在我授予用户读取权限后,它开始工作。

于 2016-07-17T17:39:06.580 回答