인프런 정수원님의 “스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security"를 보고 작성한 글입니다.
가장 상위에 SecurityConfig라는 보안 설정 인터페이스가 있고 해당 인터페이스를 상속받은 WebSecurityConfigureAdaptor라는 클래스가 있다 그리고 해당 클래스에 속한 configure를 @Override해서 사용자가 원하는 보안 수준을 설정할 수 있다.
예제 코드
문제점
위의 코드는 Spring Boot 3.xx부터 deprecated되어서 동작하지 않는다. 대신 다음과 같이 설정을 진행한다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
/**
* deprecated in Spring Security 5.4, WebSecurityconfigureAdaptor를 상속받아야 한다.
* http.authorizeHttpRequests()
* .anyRequest().authenticated();
* http.formLogin();
*/
/** recommended in Spring Security 5.4 documentation
* http
* .authorizeHttpRequests((authz) -> authz
* .anyRequest().authenticated()
* )
* .httpBasic(withDefaults());
* */
// 강의 예제
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.formLogin(withDefaults());
return http.build();
}
}
deprecated된 코드와의 차이점은 다음과 같다.
- WebSecurityconfigureAdaptor를 사용하지 않고 SecurityFilterChain을 사용하고 빈으로 등록해서 사용하는 것을 권장한다는것.
- 관련 없는 메서드들끼리 체이닝을 하기보단 람다식을 통해서 내부에서 처리하도록 변경.
배운점
인증Authentication
💡 사용자나 디바이스의 신원을 확인하는 개념
인증(Authentication)은 동적인 개념으로, 사용자가 시스템에 접근하려 할 때마다 사용자의 신원을 확인하는 과정입니다. 이 과정에서 사용자가 입력한 정보와 시스템이 저장하고 있는 사용자 정보와 비교하여 정당한 사용자인지 판단합니다. 사용자가 제공한 인증 정보는 일반적으로 사용자 ID와 비밀번호, 토큰, 인증서, 바이오메트릭 정보 등이 될 수 있습니다.
인가Authorization
💡 특정 리소스에 대한 권한을 부여하는 개념
인가(Authorization)는 정적 또는 사전 설정된 개념으로, 시스템에서 미리 사용자에게 부여된 권한이나 역할에 대한 정보를 기반으로 리소스에 대한 접근을 제어합니다. 이러한 권한 설정은 시스템 자원, 기능, 데이터에 대한 사용자의 액세스를 허용, 제한, 거부하는 역할을 합니다. 사용자가 시스템에 인증된 후에 인가 과정을 거쳐 특정 자원에 접근할 수 있는지 여부가 결정됩니다.
느낀점
스프링 시큐리티가 어떻게 동작하는지 공부를 자세하게 해야 이해가 갈 듯하다. 추후 인프런의 강의와 스프링 시큐리티 인 액션 책도 같이 보면서 공부를 진행해야 할 듯 하다. 여유가 된다면 자바8에서 추가된 람다식도 공부를 해야 할 것 같다.
'Spring security' 카테고리의 다른 글
스프링 시큐리티 기본 API 및 Filter 이해 - Remember Me 인증 (0) | 2023.06.25 |
---|---|
스프링 시큐리티 기본 API 및 Filter 이해 - Logout 처리, LogoutFilter (0) | 2023.06.25 |
스프링 시큐리티 기본 API 및 Filter 이해 - Form Login 인증 필터 : UsernamePasswordAuthenticationFilter (0) | 2023.06.24 |
스프링 시큐리티 기본 API 및 Filter 이해 - Form Login 인증 (0) | 2023.06.23 |
스프링 시큐리티 기본 API 및 Filter 이해 - 프로젝트 구성 및 의존성 추가 (0) | 2023.06.23 |