如何在 Spring Security 中为 x 框架选项提供请求匹配器?

Posted

技术标签:

【中文标题】如何在 Spring Security 中为 x 框架选项提供请求匹配器?【英文标题】:How to give request matcher in Spring Security for x frame options? 【发布时间】:2017-06-25 23:11:12 【问题描述】:

我已启用 Spring Security 标头。

我的代码是这样的:

<security:headers disabled="false">
       <security:content-security-policy policy-directives="script-src  'self' 'unsafe-inline' 'unsafe-eval'" />
       <security:cache-control disabled="true"/>
</security:headers>

默认情况下X-FRAME-OPTIONSDENY。 但有些请求我应该将X-FRAME-OPTIONS 启用为SAMEORIGIN。怎么办?

【问题讨论】:

***.com/questions/28647136/…的可能重复 【参考方案1】:

您可以使用DelegatingRequestMatcherHeaderWriter,请参阅Spring Security Reference:

20.2.3 DelegatingRequestMatcherHeaderWriter

有时您可能只想为某些请求编写标头。例如,也许您只想保护您的登录页面不被框住。您可以使用DelegatingRequestMatcherHeaderWriter 来执行此操作。使用 XML 命名空间配置时,可以通过以下方式完成:

<http>
  <!-- ... -->

  <headers>
      <frame-options disabled="true"/>
      <header ref="headerWriter"/>
  </headers>
</http>

<beans:bean id="headerWriter"
class="org.springframework.security.web.header.writers.DelegatingRequestMatcherHeaderWriter">
  <beans:constructor-arg>
      <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher"
        c:pattern="/login"/>
  </beans:constructor-arg>
  <beans:constructor-arg>
      <beans:bean
        class="org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter"/>
  </beans:constructor-arg>
</beans:bean>

要将 DENYSAMEORIGIN 用于不同的 URL,您必须添加两个具有两个不同 DelegatingRequestMatcherHeaderWriterheader 元素。

【讨论】:

以上是关于如何在 Spring Security 中为 x 框架选项提供请求匹配器?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免自定义过滤器在spring-security中为不安全的url运行

如何在 Spring Security 中为所有请求添加 jwt 身份验证标头?

如何在spring security中为来自两个不同表的不同用户配置身份验证?

Spring:HttpSession在集群Tomcat故障转移中为SPRING_SECURITY_CONTEXT返回了空对象

无法在 Spring Security 中为 oauth/token 端点启用 CORS

如何使用 Spring Security 保护 Vaadin 流应用程序