[SPRING] 스프링 보안 다중 URL 룰 세트가 함께 작동하지 않음
SPRING스프링 보안 다중 URL 룰 세트가 함께 작동하지 않음
나는 각각의 애스펙트를 주석 처리 할 때 작동하는 것처럼 보이는 HTTP 스프링 보안 설정을 가지고 있지만, 스프링 보안 규칙을 결합 할 때 작동하지 않는다. 그래서 문제는 regexMatcher 나 antMatcher와는 다르지만 규칙을 가지고있다. 조합하여 적용됩니다.
다음은 Spring Security 클래스입니다.
package com.driver.website.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.csrf.CsrfTokenRepository;
import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository;
import org.springframework.security.web.header.writers.StaticHeadersWriter;
import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
import org.springframework.security.web.util.matcher.RequestMatcher;
import javax.servlet.http.HttpServletRequest;
import java.security.AccessControlContext;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${widget.headers.xframeoptions.domains.allowed}")
private String allowedXFrameOptions;
@Value("${widget.headers.origins.allowed}")
private String allowedOrigins;
@Override
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http.exceptionHandling().accessDeniedPage("/login")
.and()
.formLogin().loginPage("/login").defaultSuccessUrl("/myaccount", true).permitAll()
.and()
.authorizeRequests()
.antMatchers("/**").permitAll();
http.regexMatcher("^((?!(/widget|/assistedSearch)).)*$")
.headers().frameOptions().disable()
.regexMatcher("^((?!(/widget|/assistedSearch)).)*$")
.headers()
.xssProtection()
.contentTypeOptions()
.addHeaderWriter(new StaticHeadersWriter("X-FRAME-OPTIONS", "SAMEORIGIN"));
http.antMatcher("/widget")
.headers()
.frameOptions()
.disable()
.antMatcher("/widget")
.headers()
.addHeaderWriter(new StaticHeadersWriter("X-FRAME-OPTIONS", "ALLOW-FROM " + allowedXFrameOptions));
http.requestMatchers().antMatchers("/assistedSearch", "/widget")
.and()
.headers()
.addHeaderWriter(new StaticHeadersWriter("Access-Control-Allow-Origin", allowedOrigins))
.addHeaderWriter(new StaticHeadersWriter("Access-Control-Allow-Methods", "GET, POST"))
.addHeaderWriter(new StaticHeadersWriter("Access-Control-Allow-Headers", "Content-Type"));
// @formatter:on
}
}
규칙은 ...
위에서 언급했듯이 For all urls ruleset을 언급 한 다음 다른 두 작업은 조화롭게 작동하지만 For all urls 규칙의 주석이없는 헤더는 표시되지 않습니다.
누구나 이것이 어떤 이유인지 알 수 있습니까? Spring Security에서 여러 룰셋을 어떻게 추가하고 기존 룰셋을 새로운 것으로 오버라이드합니까?
나는 노력했다.
http.antMatcher("/widget")
.headers()
.frameOptions()
.disable()
다시 작동하는 것으로 보이지만 조합은 아닙니다.
미리 감사드립니다!
해결법
-
==============================
1.이전 matchers를 무시합니다. HttpSecurity.html # antMatcher :
이전 matchers를 무시합니다. HttpSecurity.html # antMatcher :
및 HttpSecurity.html # regexMatcher :
하나 이상의 HttpSecurity 설정이 필요하다면, Spring Security Reference :
from https://stackoverflow.com/questions/39457121/spring-security-multiple-url-ruleset-not-working-together by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Scala / Lift over Java / Spring을 사용하는 이유는 무엇입니까? [닫은] (0) | 2018.12.28 |
---|---|
[SPRING] Maven을 사용하지 않고 Spring Framework jar를 어디에서 다운로드 할 수 있습니까? (0) | 2018.12.28 |
[SPRING] C3P0 봄 최대 절전 모드 : 풀이 초과되었습니다. 디버깅하는 방법? (0) | 2018.12.27 |
[SPRING] 봄 부팅 응용 프로그램을 사용하여 Mockito의 맞춤 필터를 무시하거나 건너 뛰는 방법 (0) | 2018.12.27 |
[SPRING] Maven- 현재 프로젝트와 플러그인 그룹에서 접두어 'spring-boot'에 대한 플러그인이 없습니다. (0) | 2018.12.27 |