如何使用 Spring Security 仅接受 https 流量并拒绝所有 http 流量?
Posted
技术标签:
【中文标题】如何使用 Spring Security 仅接受 https 流量并拒绝所有 http 流量?【英文标题】:How to accept only https traffic and deny all http traffic using Spring Security? 【发布时间】:2013-10-02 16:08:37 【问题描述】:在 java web 应用程序中,我的目标是只接受 https 请求并拒绝所有 http 请求。
在 spring 安全配置文件中,我在 intercept-url 标记中使用 requires-channel="https" 属性,但是如果用户请求 http,它会自动重定向到 https。
例子:
<intercept-url pattern="/**" access="permitAll" requires-channel="https" />
如果客户端尝试通过 http 访问应用程序,我该如何响应 404 Not Found,结果不会自动重定向到 https?
【问题讨论】:
这样对用户来说是不是很不方便? 【参考方案1】:您应该允许 HTTP,但立即重定向到相同的 URL,但使用 HTTPS。您可以在 Tomcat 或 nginx 等其他系统上集中执行此操作
使用HTTP Strict Transport Security。这将告诉浏览器将来即使用户输入 HTTP 也直接转到 HTTPS 页面。
【讨论】:
我目前在示例中显示的内容已经自动重定向到 https。出于安全原因,我们不希望这样做,因为我们正在开发 OAUTH2 安全令牌服务平台,并且客户端应该确切地知道它正在请求。以上是关于如何使用 Spring Security 仅接受 https 流量并拒绝所有 http 流量?的主要内容,如果未能解决你的问题,请参考以下文章
如何允许用户在 Spring Boot / Spring Security 中仅访问自己的数据?
如何仅在安全端点上应用 Spring Security 过滤器?
如何仅在 localhost 的 Spring Security 中禁用 csrf?
仅使用 Spring-Security(或)Spring 进行授权