Spring Boot - 来自依赖项的多个过滤器链

标签 spring spring-boot spring-security

我有以下 Spring 模块 A 和 B 的场景:

  • 模块 A - 具有单点登录安全设置的 Spring 模块,使用@EnableOAuth2Sso、@EnableWebSecurity(debug = true) 和@Order(Ordered.HIGHEST_PRECEDENCE)
  • 模块 B - Spring Boot 应用程序,具有 A 作为依赖项,不使用任何安全配置。

当我启动 B 时,我得到 2 个过滤器链,第一个来自模块 A,用于 SSO,第二个来自模块 B,是多余的:

  • o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: AnyRequestMatcher@1, [WebAsyncManagerIntegrationFilter@1407b93f, SecurityContextPersistenceFilter@38241615, OAuth2ClientContextFilter@31a8c3a3, HeaderWriterFilter@6bf2ecbb, LogoutFilter@6cc022ac, OAuth2ClientAuthenticationProcessingFilter@5aff8207, BasicAuthenticationFilter@42eaf47f, RequestCacheAwareFilter@42fc744, SecurityContextHolderAwareRequestFilter @6eeb15f9,AnonymousAuthenticationFilter@6a5a99d9,SessionManagementFilter@5955568,ExceptionTranslationFilter@74ec4df3,FilterSecurityInterceptor@6a577564]
  • o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: AnyRequestMatcher@1, [WebAsyncManagerIntegrationFilter@138110f8, SecurityContextPersistenceFilter@6278371a, HeaderWriterFilter@6b61a4b0, LogoutFilter@30623109, RequestCacheAwareFilter@c6a1be2, SecurityContextHolderAwareRequestFilter@6a486afb, AnonymousAuthenticationFilter@4fe8ac61, SessionManagementFilter@5c00de0d, ExceptionTranslationFilter @32db94fb]

问题:

  • 如何禁用没有用的默认过滤器链?
  • 模块 A 的调试标志 - @EnableWebSecurity(debug = true) 在运行模块 B 时被忽略,我无法调试安全设置
  • 是否可以“扩展”A 的链并在 B 中添加更多过滤器?

最佳答案

这是旧的,但我有同样的问题并通过将 @EnableWebSecurity 注释添加到模块 A 并将此注释添加到模块 B:s @SpringBootApplication 来解决它:

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })

如果您想知道原因,请在谷歌上搜索“SecurityAutoConfiguration”以获取有关 Spring 安全默认行为的更多信息。

关于Spring Boot - 来自依赖项的多个过滤器链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927156/

相关文章:

java - 如何使用JPA在spring-boot中通过排序聚合列来进行SQL查询?

spring - 带有 graphql-spring 的 LazyInitializationException

java - spring-boot-starter-parent 的不可解析 POM

spring - 将 Activiti 集成到 JHipster 项目中

java - Gradle Spring dependencyManager 从 BOM 定义中排除模块

java - 如何在 hibernate 中使用一对一映射执行插入

java - SpringBoot,如何在不使用ldif的情况下使用LDAP进行身份验证?

spring-boot - 在 Spring-Boot 应用程序中出现错误 "Cause: AMQ119031: Unable to validate user"

java - 通过URL透明登录

java - Spring boot Oauth2 Facebook 登录 - JSON 解析错误 : Cannot deserialize instance of `java.lang.String` out of START_OBJECT token