spring-security - 通过路由配置 Spring Security headers()

标签 spring-security

Spring 安全是否可以有不同的header().contentSecurityPolicy("...")不同路由匹配器的设置?

我目前正在使用以下 spring 安全配置:

@Configuration
@EnableWebSecurity
public static class MyWebSecurityConfigurerAdapter extends  WebSecurityConfigurerAdapter {
    @Override
    protected final void configure(HttpSecurity httpSecurity) throws Exception     {
        httpSecurity.csrf().disable()
                .rememberMe().disable()
                .headers()
                .cacheControl().disable()
                .referrerPolicy().and()
                .contentSecurityPolicy("default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'").
// followed by .authorizeRequests() section

chrome ( https://bugs.chromium.org/p/chromium/issues/detail?id=271452 ) 中存在一个错误或至少未指定的行为,如果资源使用具有严格 object-src 策略的 CSP-Header 提供,它会阻止浏览器显示 PDF 文档。

为了避免这种行为,我想提供不同的 contentSecurityPolicy()不同路由匹配器的配置(在这种情况下,一个用于“../*.pdf”(或者更好的匹配响应内容类型的匹配器),另一个用于所有其他请求)。

最佳答案

此代码将为两个不同的 URL 创建两个安全过滤器。每个都有自己的内容安全策略:

@Configuration
@Order(1)
class PatterWebSecurityConfigurer : WebSecurityConfigurerAdapter() {
    override fun configure(http: HttpSecurity) {
        http
            .antMatcher("/pattern")
            .headers().contentSecurityPolicy("directives")
    }
}

@Configuration
@Order(2)
class OtherPatternWebSecurityConfigurer : WebSecurityConfigurerAdapter() {
    override fun configure(http: HttpSecurity) {
        http
            .antMatcher("/otherPattern")
            .headers().contentSecurityPolicy("other directives")
    }
}

关于spring-security - 通过路由配置 Spring Security headers(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920687/

相关文章:

spring - Xml Spring配置:无法找到springframework.org/schema/security

spring-boot - 如何仅在 localhost 的 spring security 中禁用 csrf?

grails - 在 Grails 3.x 中应该使用 Spring Sec OAuth 的哪个插件/模块?

java - 无法配置 spring boot 安全 - 总是 403

spring - 如何避免使用 Spring Security 重定向到某些 URL 的登录表单?

java - 为什么 GlobalAuthenticationConfigurerAdapter.init() 不可见?

Java Spring 与 Spring Security 的依赖版本冲突

grails - 根据用户角色隐藏内容?

java - Spring安全自定义AuthenticationToken

使用graphql在spring boot中进行身份验证