You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Spring Boot가 제공하는 Auto Configuration을 적극 활용하는 예시로 Spring Security 부분을 준비했습니다.
Security System을 구축하기 위해서 다양한 요구사항이 존재할 수 있으며, 다양한 방법의 인증/인가를 설정할 수 있습니다.
대표적으로 Spring Security 의존성이 추가되었을때 기본적으로 Basic 인증 방식과 In-Memory 방식의 authentication을 제공합니다.
@ConditionalOnClass(SecurityFilterChain.class) → SecurityFilterChain 클래스가 classpath에 있을 때만 적용 (즉, Spring Security dependency가 있을 때)
@ConditionalOnMissingBean(name = BeanIds.SPRING_SECURITY_FILTER_CHAIN)
→ 사용자가 SPRING_SECURITY_FILTER_CHAIN을 직접 정의했다면 자동 설정을 안 함 (Spring Boot AutoConfiguration의 전형적인 패턴)
@import(...) → 실제 Security 설정을 담당하는 다른 설정 클래스를 가져옴
• SpringBootWebSecurityConfiguration : 디폴트 WebSecurityConfigurerAdapter 비슷한 설정 제공
• WebSecurityEnablerConfiguration : @EnableWebSecurity 활성화
• SecurityDataConfiguration : DataSource 기반 보안 관련 설정
위는 스프링 시큐리티 5.7이전에 사용되던 설정 방식입니다.
WebSecurityConfigurerAdapter를 상속받아서 Default Configurer과정을 덮어씌워서 사용자가 원하는 설정을 하는 방식입니다.
이는 설정 1개를 변경하려고 하더라도 Auto Configuration과정에서 진행되던 다른 영역들까지 모두 재설정해줘야했습니다.
Spring Security 5.7이후의 SpringFilterChain Bean 등록 방식
HttpSecurity는 SecurityFilterChainBuilder를 상속받습니다.
즉, HttpSecurity Builder를 통해서 SecurityFilterChian 빈을 생성해서 등록하도록 하고있습니다.
5.7이후의 버전에서는 이러한 빈을 조립하는 과정 중 특정 설정에 대해서만 사용자가 커스텀할 수 있도록 합니다.
이러한 변경을 통해, Spring Security가 자동구성해주는 영역에서 사용자는 원하는 부분만 제어할 수 있게 되었습니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Spring Boot가 제공하는 Auto Configuration을 적극 활용하는 예시로 Spring Security 부분을 준비했습니다.
Security System을 구축하기 위해서 다양한 요구사항이 존재할 수 있으며, 다양한 방법의 인증/인가를 설정할 수 있습니다.
대표적으로 Spring Security 의존성이 추가되었을때 기본적으로 Basic 인증 방식과 In-Memory 방식의 authentication을 제공합니다.
@ConditionalOnClass(SecurityFilterChain.class) → SecurityFilterChain 클래스가 classpath에 있을 때만 적용 (즉, Spring Security dependency가 있을 때)
@ConditionalOnMissingBean(name = BeanIds.SPRING_SECURITY_FILTER_CHAIN)
→ 사용자가 SPRING_SECURITY_FILTER_CHAIN을 직접 정의했다면 자동 설정을 안 함 (Spring Boot AutoConfiguration의 전형적인 패턴)
@import(...) → 실제 Security 설정을 담당하는 다른 설정 클래스를 가져옴
• SpringBootWebSecurityConfiguration : 디폴트 WebSecurityConfigurerAdapter 비슷한 설정 제공
• WebSecurityEnablerConfiguration : @EnableWebSecurity 활성화
• SecurityDataConfiguration : DataSource 기반 보안 관련 설정
이전에 사용하던 Spring Security 설정 방식
위는 스프링 시큐리티 5.7이전에 사용되던 설정 방식입니다.
WebSecurityConfigurerAdapter를 상속받아서 Default Configurer과정을 덮어씌워서 사용자가 원하는 설정을 하는 방식입니다.
이는 설정 1개를 변경하려고 하더라도 Auto Configuration과정에서 진행되던 다른 영역들까지 모두 재설정해줘야했습니다.
Spring Security 5.7이후의 SpringFilterChain Bean 등록 방식
HttpSecurity는 SecurityFilterChainBuilder를 상속받습니다.
즉, HttpSecurity Builder를 통해서 SecurityFilterChian 빈을 생성해서 등록하도록 하고있습니다.
5.7이후의 버전에서는 이러한 빈을 조립하는 과정 중 특정 설정에 대해서만 사용자가 커스텀할 수 있도록 합니다.
이러한 변경을 통해, Spring Security가 자동구성해주는 영역에서 사용자는 원하는 부분만 제어할 수 있게 되었습니다.
Beta Was this translation helpful? Give feedback.
All reactions