Spring security:使用注释强制 https?
Posted
技术标签:
【中文标题】Spring security:使用注释强制 https?【英文标题】:Spring security: forcing https using annotations? 【发布时间】:2011-07-16 08:44:59 【问题描述】:Spring 安全文档状态 (2.3.2):
如果您的应用程序同时支持 HTTP 和 HTTPS,你需要 只能访问特定的 URL 通过 HTTPS,那么这是直接的 支持使用 requires-channel 属性:
<http>
<intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/>
<intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/>
...
</http>
但我在我的控制器上使用注释,而不是拦截 url 元素。
我可以通过注释有选择地强制实施 HTTPS 吗? 我可以对非安全页面强制使用 HTTP 吗?【问题讨论】:
【参考方案1】:从可用的文档看来,使用 only 注释可能无法强制执行通道安全性。
【讨论】:
似乎唯一的方法是通过intercept-url,这似乎破坏了注释(我已经注释了我的所有控制器并且到目前为止没有使用intercept-url,我猜我'将不得不回溯)。感谢您对此的确认,这很有帮助。【参考方案2】:有很多例子展示了如何在 Spring Security 中使用注解
http://www.jroller.com/habuma/entry/method_level_security_in_spring
spring not enforcing method security annotations
我不明白您对非安全页面强制使用 HTTP 是什么意思。如果它是不安全的,那么它已经是 HTTP。
【讨论】:
我没有在这些链接中明确指出如何使用 only 注释强制用户使用 HTTPS。关于 HTTP,当从安全页面(例如帐户页面)转换回正常的非安全页面(作为将 HTTPS 流量保持在最低限度的一种方式)时,我正在考虑将用户降级到 HTTP。 @David:通过总 URL 将页面划分为安全和不安全是最简单的(这样更容易正确!),如果您想在返回不安全时从 HTTPS 降级到 HTTP,请注意你可以使用requires-channel="http"
来做到这一点。以上是关于Spring security:使用注释强制 https?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Security 的 @Secured 注释中是不是允许多个角色
Spring-Security:忽略服务器名称的别名并强制重新登录
Spring Security,注释@Secured 不起作用
使用 Spring Security 的 @PreAutorize 注释问题
如何使用 Spring boot keycloak 适配器 + spring security 强制更新 oAuth 令牌(访问令牌 + 刷新令牌)。?