스프링 시큐리티는 시큐리티 세션을 관리한다.
세션에 들어갈 수 있는 타입은 Authentication 타입만 가능
Authentication은 UserDetails, OAtuh2User 객체로 형변환이 가능하다.
- UserDetails : 일반적인 로그인
- OAuth2User : OAuth 로그인
두개의 객체를 한 컨트롤러에서 관리하기 위해서는, 한 클래스로 두 인터페이스를 구현한다.
Spring Security Filters Chain
Spring Security 프레임워크를 애플리케이션에 추가하면 들어오는 모든 요청을 가로채는 필터 체인으로 등록한다.
이 체인은 다양한 필터로 구성되며 각 필터는 특정한 것들을 처리한다.
- 요청된 URL에 엑세스가 가능한지
- 세션 기반 인증일 경우 세션에서 사용자가 이미 인증되었는지
- 사용자가 권한을 가지고 있는지
Spring Security 필터는 가장 낮은 순서로 등록되고, 첫 번째 필터이다.
사용자 정의 필터를 앞에 두고 싶다면 순서를 바꿔야 한다.
applcation.properties
spring.security.filter.order=10
// Spring security 필터 앞에 10개의 사용자 정의 필터를 위한 공간 생성
AuthenticationManager
여러 공급자들을 등록할 수 있는 코디네이터로 생각 할수 있다.
요청 유형에 따라 올바른 공급자에게 인증 요청을 전달
AuthenticationProvider
특정 유형의 인증을 처리
- authenticate 요청으로 인증 수행
- supports로 공급자가 표시된 인증 유형을 지원하는지 확인
UserDetailsService
사용자별 데이터를 로드하는 핵심 인터페이스
인증 공급자는 데이터베이스에서 자격 증명을 기반으로 사용자 ID 정보를 추출한다음 유효성 검사를 수행한다.
사용사례가 너무 일반적이기 때문에 단일 기능의 함수를 구현한다.
- loadUserByusername : 사용자 이름을 매개변수로 받아들이고 사용자 ID 개체를 반환
@EnableWebSecurity
기본적인 Web 보안을 활성화
'Back-end' 카테고리의 다른 글
Checked Exception vs Unchecked Exception(+ Transaction) (0) | 2022.10.20 |
---|---|
Session 이란? (0) | 2022.10.17 |
다양한 연관관계 매핑 (0) | 2022.09.15 |
연관관계 매핑 기초 (0) | 2022.09.14 |
엔티티 매핑 (0) | 2022.09.07 |