인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

djqwkfj43u님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

요청 기반 권한 부여 - HttpSecurity.securityMatcher()

9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.

작성

·

38

·

수정됨

0

스프링 부트 3.4.3, 스프링 시큐리티 6.4.3 기준입니다.

다음과 같이 설정하게 되면 api/**는 적용되지 않고 oauth/**에만 적용됩니다.

http.securityMatchers(matchers ->
    matchers.requestMatchers("/api/**")
)
.securityMatchers(matchers ->
    matchers.requestMatchers("/oauth/**")
);

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

위의 코드는 복수 설정인데 그런가요?

복수 설정은 여러개 등록 가능합니다

강의 예제도 실행하면 그런가요?

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. djqwkfj43u님, 질문 주신 내용은 Spring Security에서 설정된 securityMatchers의 우선순위가 어떻게 적용되는지에 대한 것 같습니다.

스프링 시큐리티에서는 각 요청 패턴에 대한 설정을 마지막에 지정한 것만 유효하게 되는 점이 있습니다. 따라서 위의 코드에서는 ‘api/**‘에 대한 설정이 덮어씌워지는 문제가 발생하는데요, 어떤 패턴이든 마지막으로 쓰여진 설정이 적용됩니다. 이는 HttpSecurity 설정이 빌더 패턴으로 구현되어 있기 때문에 발생합니다.

두 개의 securityMatchers를 개별로 설정할 때는 설정 순서를 주의해야 합니다. 앞서 설정한 특정 경로 패턴이 다음 설정에 의해 덮어쓰여지지 않도록 주의해야 합니다. 중복되는 설정이 있다면 하나의 securityMatchers 안에서 각각의 requestMatchers를 정의함으로써 해결할 수 있습니다.

관련 정보를 보완하기 위해 참고할 만한 페이지가 있어 링크를 드립니다:

위의 링크를 통해 각 설정의 유효성과 사용법에 대해 더 명확하게 이해하실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.