23.09.20 14:32 작성
·
335
0
지금까지의 강의 내용을 참고해보면, HttpSecurity, WebSecurity 둘다 SecurityConfigurer를 구성할 수 있기 때문에, 둘다 SecurityFilterChain을 형성할 수 있다로 이해했습니다.
그런데, springSecurity가 적용된 프로젝트들의 설정 빈들을 살펴보면 거의 HttpSecurity로만 활용하여 SecurityFilterChain을 구성하고 WebSecurity의 경우, WebSecurityCustomizer를 살짝 커스터마이징(리소스 접근 가능여부)이 적용만 되어있는것으로 확인했습니다.
이렇게 거의 HttpSecurity만을 활용하여 SecurityFilterChain을 커스터마이징하고 추가하는 경우가 많은 이유는 WebSecurity와 HttpSecurity가 담당하는 역할의 차이점 때문일까요? 아니면 프레임워크 구조 때문인걸까요?
답변 1
2
2023. 09. 21. 22:03
네 마지막에 질문한 내용처럼 WebSecurity 와 HttpSecurity 의 역할과 책임이 서로 다르기 때문입니다.
범위로 보더라도 WebSecurity 는 HttpSecurity 보다 더 큽니다.
HttpSecurity 는 Http 프로토콜로 통신하는 어플리케이션에서 보안시스템을 구축하기 위한 구체적인 API 들로 구성되어 있습니다.
WebSecurity 는 Http 뿐 아니라 웹과 관련된 전반적인 설정을 위해 존재합니다. 그렇기 때문에 HttpSecurity 에 의해 생성된 필터들을 연결하고 제어하는 역할을 하게 됩니다.
그래서 WebSecurity 의 역할이 HttpSecurity 에 비해서 결코 작거나 가볍지 않습니다.
가령 인증이나 인가 필터를 거치지 않고 바로 서블릿으로 갈 수 있도록 하는 기능도 WebSecurity 에 포함되어 있습니다.
인증이나 인가의 구체적인 실행 항목들은 HttpSecurity 에 거의 속해 있지만 이 실행 항목들이 특정한 규칙이나 순서, 의존관계 등에 의해 제어되거나 수행되도록 하는 것은 WebSecurity 에 속해 있는 기능들입니다.
결론적으로 두 클래스간 역할이 다른 것이며 서로 상호협력관계에 있다고 할 수 있습니다.