我认为我的问题与以下问题Spring security 'remember me' cookie not avaiable in first request非常相似。
基本上我有一组企业内部网的应用程序,通过记住我的cookie共享身份验证。 Cookie的域名设置为.domain.com,因此可以跨应用程序共享,因为它们都在同一个域或子域中。
如果用户未登录并尝试转到受保护的应用程序,则会将其重定向到中央应用程序以进行登录。登录后,用户被重定向到原始应用程序,然后将它们发送到登录屏幕,但这里是问题的开始。在第一个请求中,在接收重定向的应用程序的HttpServletRequest中不会出现Remember Cookie,用户将无法登录,正在重定向回到登录屏幕。此时虽然实际的cookie存在且有效,但用户可以手动转到他们刚来的网址并通过记住我的cookie登录。
例如
domain.com/app - >重定向 - > domain.com/main/login - >重定向 - > domain.com/app - >重定向 - > domain.com/main/login - >手动导航 - > domain.com/app - >登录。
我已尝试使用response.sendRedirect重定向后端的几个解决方案,首先将用户发送到一个中间页面,该页面重定向JS并且没有任何帮助。在第一次请求其他应用程序时,cookie根本就不存在。为了使其更加混乱,如果登录重定向到包含登录页面的主应用程序,则第一次请求时会立即显示cookie。
有什么想法吗?
答案 0 :(得分:0)
这最终导致请求缓存在我们的一系列登录后重定向期间受到阻碍。将以下内容添加到我们的java安全配置中修复了该问题。
public HttpSecurity configureHttp(HttpSecurity http, IntranetSecurityAccessDeniedHandler intranetSecurityAccessDeniedHandler) throws Exception {
http
.requestCache().requestCache(new NullRequestCache()).and()}