Today I Learned
(24.05.22)[6주차] Spring 숙련 강의 02
난이도가 점점 높아지면서 이해하고 소화시키는데 약간 무리가 있어서 학습시간이 과하게 늘어지는 경향이 있다.
이럴 수록 정신을 좀 차려서 집중할 수 있도록 학습 환경 구성이 필요하다고 생각
Spring 숙련 강의 간단정리
- 이번 강의에서는 Spring Security Framework에서의 formLogin과 JWT를 사용하는 Customization, 그리고 권한 설정과 검증 Validation에 관한 내용에 대해서 학습
- 이를 파악하기 위해서 SecuritycontextHolder 구조를 이해하고 사용을 할 수 있고, Filter를 사용해야 하는 부분이 여러 패키지 사이를 움직이면서 작동하는 것이기 때문에 매우 복잡하고 난이도가 있게 느껴졌다
- 반드시 2, 3회를 더 강의와 개인 Notion 노트를 보고 복습을 진행을 해야하는 부분
- 권한을 부여하고, 권한을 검증하는 부분은 서로 다른 부분이긴 하지만, 같은 기능을 하기 때문에 묶어서 크게 기능상으로 볼 필요가 있다고 생각.
더보기
Spring Security Framework
- 'Spring' 프레임워크가 웹 서버 구현에 편의를 제공해주는 것 처럼 인증 및 인가에 대한 기능을 제공
- ***Spring Security는 Session 방식으로, 요청 받은 SessionID(클라이언트에서 만들어진)을 저장해서 이후의 요청 받은 SessionID(=JSONID)를 비교를 해서 인증처리를 해주는 방식
Spring Security - Filter Chain
- Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller 로 분배되는 것은 기초에서 학습한것
- 이 때 각 요청에 대해서 공통적으로 처리해야할 필요가 있을 때 DispatcherServlet 이전에 단계를 필터
- 그 부분이 SecurityFilterChain
Spring Security - Form Login 인증 방식
- URL 요청이 들어왔을 때 인증이 되지 않았다면 로그인 페이지를 반환하는 형태
UsernamePasswordAuthenticationFilter
- 내부 인증 처리 필터
SecurityContextHolder의 구성
SecurityContextHolder
- Form Login 기반을 사용할 때 username 과 password 확인하여 인증 필터
- UsernamePasswordAuthenticationToken은 위의 Authentication에 들어가는 것
Authentication
- 대개 사용자를 식별하는데 사용, SecurityContext에서 가져와서 사용하게 되는 것
- principal
- 사용자를 식별
- Username/Password 방식으로 인증할 때 일반적으로 UserDetails, 인스턴스 아래 UserDetailsService 확인
- credentials
- 주로 비밀번호, 대부분 사용자 인증에 사용한 후 비워버림
- authorities
- 사용자에게 부여한 권한을 GrantedAuthority로 추상화하여 사용
- 권한에따라서 요청을 처리할지 말지를 위해서 존재
UserDetailsService
- username/password 인증방식을 사용할 때 사용자를 조회하고 검증한 후 UserDetails를 반환
UserDetails
- UsernamePasswordAuthenticationToken 타입의 Authentication를 만들 때 사용
Spring Security : Login
Spring Security 의 인증/인가
- Success : Controller 로 Client 요청 전달
- Client Reponse 요청 + 사용자 정보 (UserDetails)
- Failure : Controller 로 Client에게 Error Response
Spring Security의 권한 Authority 설정
- 회원 상세정보 (UserDetails) 를 통해 "권한 (Authority)" 설정
- UserDetails 저장된 authorities 값을 사용하여 간편하게 권한을 제어
- 권한을 1개 이상 설정 가능
Spring Security의 권한 Authority 제어
- Controller 에 **@Secured**애너테이션으로 권한 설정이 가능
Validation
- 예외에 대한 검증
Bean Validation
- 검증을 간단하게 할 수 있는 Annotation을 제공
이것저것 해야하는 일도 생기고 이번주 금요일 까지는 Spring의 보안관련 숙련주차를 훝어보는 것으로 마무리짓고 싶은데
아무래도 몇번 더 보고 학습을 해야한다고 생각을 한다.
+ 건강이 좀 무리가 가는것 같아 컨디션 조절도 필수
'Today I Learned' 카테고리의 다른 글
(24.05.24)[6주차] Spring 숙련 강의 04 마무리 (0) | 2024.05.24 |
---|---|
(24.05.23)[6주차] Spring 숙련 강의 03 (0) | 2024.05.23 |
(24.05.21)[6주차] Spring 숙련 강의 01 (0) | 2024.05.21 |
(24.05.20)[6주차] compare, compareTo 메서드 비교 & 사용자 정의 Comparator 활용 (0) | 2024.05.20 |
(24.05.18)[5주차] WIL (0) | 2024.05.18 |