Spring boot 如何添加HTTP“;功能策略”;春季收割台

Spring boot 如何添加HTTP“;功能策略”;春季收割台,spring-boot,spring-security,content-security-policy,Spring Boot,Spring Security,Content Security Policy,我需要添加HTTP“Feature Policy”响应头,但我没有找到任何方法在spring的头中实现这一点- @EnableWebSecurity 公共类WebSecurityConfig扩展了WebSecurityConfigureAdapter{ @凌驾 受保护的无效配置(HttpSecurity http)引发异常{ http // ... .headers() .contentSecurityPolicy(“脚本src'self”https://trustedscripts.examp

我需要添加HTTP“Feature Policy”响应头,但我没有找到任何方法在spring的头中实现这一点-

@EnableWebSecurity
公共类WebSecurityConfig扩展了WebSecurityConfigureAdapter{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
// ...
.headers()
.contentSecurityPolicy(“脚本src'self”https://trustedscripts.example.com;对象srchttps://trustedplugins.example.com;报告uri/csp报告端点/”;
}

我可以看到规范草案,但在Spring中没有太多关于使用它的内容。任何建议都将不胜感激。

要创建自定义标题,您应该使用
addHeaderWriter
和add
staticheaderwriter

例如:

@EnableWebSecurity
@配置
公共类WebSecurityConfig扩展了WebSecurityConfigureAdapter{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
// ...
.headers()
.contentSecurityPolicy(“脚本src'self”https://trustedscripts.example.com;对象srchttps://trustedplugins.example.com;报告uri/csp报告端点/“”)
.及()
.addHeaderWriter(新的StaticHeaderWriter(“功能策略”,“振动”无“;用户媒体”无“));
}
}

Spring Security在5.1中引入了对
功能策略的支持,因此可以将其配置为其他标题:

http
.headers()
.featurePolicy(“地理位置‘无’”);
对于5.2+版本,代码略有不同:

http
.标题(标题->
headers.featurePolicy(“地理位置‘无’”)
);
有关详细信息,请参阅文档:


更新:@granty指出,
功能策略
标题已重命名为
权限策略
。即将推出的Spring Security 5.5.0-M2将支持它。下面是它的外观:

http
.标题(标题->
标题.权限策略(权限->
permissions.policy(“地理位置=(自身)”)
)
);

另请参阅相关的pull请求:

这可能对您的案例很有用。请稍晚查看一下。一年前,它们造成了混乱,而现在它是一个。因此,您仍然必须使用
addHeaderWriter()
/
StaticHeaderWriter()
来发布权限策略头。