通过 Okta 进行身份验证后,会话 cookie 不会发送到 Spring Boot 应用程序

Posted

技术标签:

【中文标题】通过 Okta 进行身份验证后,会话 cookie 不会发送到 Spring Boot 应用程序【英文标题】:Session cookies are not being sent to the Spring Boot app after authenticating via Okta 【发布时间】:2021-04-27 23:17:43 【问题描述】:

当用户浏览我的 Spring Boot 应用程序时,他们会被重定向到通过 Okta 登录,登录后,他们会被重定向到默认页面,而不是他们请求的原始页面。

我认为发生这种情况的原因是会话 cookie 未发送到服务器,导致服务器无法找到其先前保存的请求。会话 cookie 具有默认为 LaxSameSite 属性,并且由于从 Okta 调用到我的 Spring Boot 应用程序的 SSO URL 是 POST 方法,因此不会发送会话 cookie。为了解决这个问题,我需要配置 Spring 以将会话 cookie 的 SameSite 属性设置为 None,并且我的 Spring Boot 应用程序必须是 https。这听起来对吗?是否有替代解决方案?

【问题讨论】:

【参考方案1】:

会话 cookie 必须将 SameSite 属性设置为 NoneSecure 属性。默认情况下,SameSite 属性不是 Spring 设置的,浏览器默认为Lax。这将导致在使用 SSO 和 SAML 时,浏览器不会将会话 cookie 发送到服务器。

【讨论】:

以上是关于通过 Okta 进行身份验证后,会话 cookie 不会发送到 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

okta 对应用程序进行身份验证时如何获取会话

如何检查用户是不是通过 Laravel 上的 cookie 会话进行身份验证?

会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。

Web 身份验证状态 - 会话与 Cookie?

使用 OKTA 进行 Ocelot 网关身份验证

身份验证后回调时出现 404 错误(Spring Boot + Angular + Okta)