在 Spring Security 5.1.6 中,logout-success-url 总是重定向到 HTTP 而不是 HTTPS

Posted

技术标签:

【中文标题】在 Spring Security 5.1.6 中,logout-success-url 总是重定向到 HTTP 而不是 HTTPS【英文标题】:In Spring Security 5.1.6, logout-success-url always redirects to HTTP instead of HTTPS 【发布时间】:2020-06-18 17:13:26 【问题描述】:

我在 Wildfly16 应用服务器中配置了 Spring security 5.1.6。 对于注销,我已经完成了如下配置;

当我使用 HTTP url 时,没有问题。但是当我使用 HTTPS URL 时,单击 LOGOUT 链接后,它会重定向到“logout-success-url”中配置的相对路径,协议为 HTTP 而不是 HTTPS。

我已经尝试使用“<property name="redirectHttp10Compatible" value="false" />”来定义 InternalResourceViewResolver bean。但问题存在。

还尝试将 requires-channel 作为 https。但问题存在。 .

我不想在“logout-success-url”中硬编码 https URL。

我们还有什么办法可以解决这个问题?

【问题讨论】:

将 requiresChannel 设置为 https,然后访问 logout-success-url,发生了什么? @NatFar....同样的结果。仍然登录 URL 重定向为 HTTP 而不是 https。 到目前为止,我正在添加一个扩展“SimpleUrlLogoutSuccessHandler”的自定义处理程序。在“success-handler-ref”中引用客户处理程序是为了达到目的。但是,如果我们有一个解决方案可以在所有相对路径处理程序中根据上下文设置协议,那仍然会很容易。 【参考方案1】:

我遇到了同样的问题,这个post 在我这边解决了它:

server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto

来源:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-enable-https

【讨论】:

以上是关于在 Spring Security 5.1.6 中,logout-success-url 总是重定向到 HTTP 而不是 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Oauth、SAML 和 spring-security 的多租户的情况下从 spring-security.xml 中获取错误

spring boot 整合spring security中spring security版本升级的遇到的坑

如何在 spring-security 5.2 中增加 RemoteJWKSet 缓存 TTL

Spring Security系列教程解决Spring Security环境中的跨域问题

Spring mvc / security:从spring security中排除登录页面

在项目中使用Spring Security进行权限控制