弹簧靴&x2B;Spring Security+;自定义筛选器(siteminder)-Infinte循环

弹簧靴&x2B;Spring Security+;自定义筛选器(siteminder)-Infinte循环,spring,spring-security,spring-boot,Spring,Spring Security,Spring Boot,我正在尝试为我的Spring Boot webapp配置自定义安全筛选器。最初我将其配置为从Angular JS自定义表单登录,但现在我尝试分离该配置并实现Siteminder SSO过滤器。我正在使用Spring提供的RequestHeaderAuthenticationFilter。我也会发布配置。但是当我添加这个配置时,当我在服务器启动后启动我的webapp时,它会进入一个无限循环。这是无限循环。请让我知道,如果你想看更多的配置或细节,但这一直困扰着我,因为一个星期以来。任何帮助都将不胜感

我正在尝试为我的Spring Boot webapp配置自定义安全筛选器。最初我将其配置为从Angular JS自定义表单登录,但现在我尝试分离该配置并实现Siteminder SSO过滤器。我正在使用Spring提供的RequestHeaderAuthenticationFilter。我也会发布配置。但是当我添加这个配置时,当我在服务器启动后启动我的webapp时,它会进入一个无限循环。这是无限循环。请让我知道,如果你想看更多的配置或细节,但这一直困扰着我,因为一个星期以来。任何帮助都将不胜感激。谢谢

======================Infinite Loop Start=========================

[ERROR] org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/mpe].[dispatcherServlet] - Servlet.service() for servlet dispatcherServlet threw exception
java.lang.StackOverflowError: null
    ====================================624 Times Start=============================================
    at javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:390) ~[servlet-api.jar:3.0.FR]
    =====================================624 Times End============================================

    at org.apache.catalina.core.ApplicationDispatcher.unwrapRequest(ApplicationDispatcher.java:846) ~[catalina.jar:7.0.55]

    ====================================40Times Start====================
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) ~[catalina.jar:7.0.55]
    at org.springframework.boot.context.web.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:155) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
    at org.springframework.boot.context.web.ErrorPageFilter.handleException(ErrorPageFilter.java:138) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
    at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:108) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
    at org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:89) ~[spring-boot-1.1.3.RELEASE.jar:1.1.3.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) ~[catalina.jar:7.0.55]
    ====================================40 Times End===========================================

    ====================================Infinite Loop End============================================

无限循环是由于配置不正确造成的。一些常见原因:

  • 如果您有“拒绝访问”页面,则不应使用安全筛选器对其进行保护。否则,安全过滤器将被无限调用
  • 如果您正在使用JSP或其他模板技术,请检查您是否没有

我从堆栈跟踪中看到,Spring Boot的
ErrorPageFilter
涉及无限循环,您使用的是Spring Boot的1.1.3.RELEASE版本。Spring Boot 1.1.5中的一个配置,以确保每个请求只驱动一次其
ErrorPageFilter
。您应该升级到Spring Boot的最新版本(在撰写本文时为1.1.8.0版本)。它要么完全解决您的问题,要么在无限循环消失后让您看到潜在的问题。

Dude!你是救世主!!非常感谢!我希望我早一点就把它贴出来,而不是用脑袋去敲它!