gpt4 book ai didi

https - 在 Spring Security 3.2 中使每个请求都使用 https

转载 作者:行者123 更新时间:2023-12-02 19:38:38 25 4
gpt4 key购买 nike

我正在使用 spring security 3.2,使用 namespace 配置,并且我希望所有调用都为 https。我知道这会降低大约 1/10 的性能,但我仍然想实现它。我知道你/可能会从 tomcat 本身实现这一点,但我想在 security.xml 中配置它

最佳答案

您可以通过添加 requires-channel attribute 来配置需要 https。在每个拦截网址上。例如:

<http>
<intercept-url pattern="/secure/**" access="ROLE_ADMIN" requires-channel="https"/>
<intercept-url pattern="/**" access="ROLE_USER" requires-channel="https"/>
</http>

您可以使用 Spring Security Java 配置更简洁地配置它。请注意,我们可以将 channel 配置与角色映射分开。例如:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/secure/**").hasRole("ADMIN")
.anyRequest.hasRole("USER")
.and()
.requiresChannel()
.anyRequest().requiresSecure();
}
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}

从 Spring Security 3.2 开始,您可能还想确保使用 Spring Security 的 header 支持。 Spring Security Java 配置中默认启用此功能。在这种特定情况下,该元素可以将名为 Strict-Transport-Security 的 header 添加到响应中,以确保浏览器将来甚至不会发出 HTTP 请求。例如:

<headers>
<hsts/>
</headers>

您将希望在the Headers section of the reference中阅读更多相关内容。 .

关于https - 在 Spring Security 3.2 中使每个请求都使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21538288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com