0

JSESSIONID 没有在我们的 Spring Boot 应用程序中设置“安全”标志。该应用程序启用了 SSO,并使用 OKTA 作为我们的 IDP,并且我们使用 Spring Security-SAML

下面是应用程序的简单流程。

浏览器 -> HTTPS -> AWS-ALB -> HTTP -> Spring Boot APP -> OKTA URL (HTTPS)。

这里 SSL 终止发生在 ALB,从 Spring 引导应用程序的角度来看,应用程序在 HTTP 上。

问题是我们的安全工具分析报告抱怨 JSESSIONID 没有启用“安全”标志。当我尝试如下启用安全 cookie 时,初始请求的 JSESSIONID 为“安全”,并且在身份验证后“安全”标志被删除。

server.session.cookie.secure: true

尽管此SO 线程提供了一种添加“安全”标志的方法,但我无法将其与 ALB 端场景的 SSL 终止和 SAML 断言流(对 OKTA 的应用程序调用)通过 HTTP 到 HTTPS 发生关联。

任何想法如何设置/保留 JessionID 安全标志?

4

1 回答 1

0

添加server.tomcat.protocol-header=x-forwarded-proto解决问题的spring boot配置。

我误解了 Cookie 标志(安全,仅限 http)将显示在 Chrome 开发工具的请求标头中,但事实并非如此,因为标志仅显示在响应标头中,因为Set-Cookie标头仅用于响应。

于 2019-02-01T14:10:24.780 回答