Spring security 记住没有HTTP会话的目标URL

Spring security 记住没有HTTP会话的目标URL,spring-security,spring-security-oauth2,cas,Spring Security,Spring Security Oauth2,Cas,在后端代理CAS的上下文中,我的用户通常使用默认的重定向页面,而不是原始页面 在我的应用程序的工作流中,当我需要从我的webapp访问资源服务器时,它需要由Oauth2服务器(与spring-security-Oauth2和spring-security cas一起工作)提供有效的JWT令牌。若Oauth2服务器为该用户提供了CAS会话,它会给他JWT令牌,否则,它会将他重定向到CAS登录页面 在我的Oauth2服务器的spring security cas mecanism中,当用户填写登录c

在后端代理CAS的上下文中,我的用户通常使用默认的重定向页面,而不是原始页面

在我的应用程序的工作流中,当我需要从我的webapp访问资源服务器时,它需要由Oauth2服务器(与spring-security-Oauth2和spring-security cas一起工作)提供有效的JWT令牌。若Oauth2服务器为该用户提供了CAS会话,它会给他JWT令牌,否则,它会将他重定向到CAS登录页面

在我的Oauth2服务器的spring security cas mecanism中,当用户填写登录cas页面时,它将原始请求(我来自的webapp URI)存储在HTTP会话中。如果登录成功,用户将被重定向到我的后端的端点,并且以前存储的请求将用于构建重定向到我的webapp()

在我的应用程序中,经常会发现它没有找到这个存储的请求。因为会话已过期。在本例中,它重定向到我的后端的默认页面

我可以增加服务器的http会话过期时间,但这并不能解决问题

对我来说,最好将原始URI转发给提交给CAS登录的查询请求(进入“服务”参数)。无国籍

我尝试了以下更改:

  • 在我的http配置中:
    sessionManagement().sessionCreationPolicy(sessionCreationPolicy.STATELESS)
  • 在我的http配置中,一个自定义的AuthenticationSuccessHandler,它设置了
    targetUrlParameter
  • serviceProperties bean中的一组
    AuthenticateAllarArtifacts
    true
  • 定制的AuthenticationDetailsSource和CasAuthenticationEntryPoint,使用类似Matt的“DynamicServiceSolver”完成:
我的后端端点在登录成功后被很好地调用(使用重定向uri)

但是,在验证阶段(当我的后端使用服务票证调用CAS到/serviceValidate端点时),我的CAS说我“无效的票证”,我的票证是未知的

编辑:[很抱歉,这是调试模式导致的错误(票证寿命很短)],但是,当重定向到原始请求时(在我的情况下是GET),它会将我视为匿名用户

我希望在不使用HTTP会话的情况下调用CAS,但实际上我还没有找到该怎么做

SimpleUrlAuthenticationSuccessHandler handler = new SimpleUrlAuthenticationSuccessHandler();
handler.setTargetUrlParameter("redirect_uri");
casAuthenticationFilter.setAuthenticationSuccessHandler(handler);