§ 학습 전(계획) §
▶ 학습 목표는 무엇인가?
- JWT 인증
JWT 자격 증명을 위한 로그인 인증 구현
JWT를 이용한 자격 증명 및 검증 구현
▶ 이미 알고 있는 내용은 무엇인가?
JWT의 기본적인 내용은 어제 학습했고, 오늘은 코드로 구현해서 적용시켜볼 것 같다.
§ 학습 후(점검 및 평가)
▶ 새롭게 배운 내용은 무엇인가?
- Spring Security 기반의 애플리케이션에 JWT를 적용하기 위해서는 jjwt나 Java JWT 같은 별도의 라이브러리가 필요
- UsernamePasswordAuthenticationFilter를 이용해 JWT 발급 전의 로그인 인증 기능을 구현
- 직접 Custom Configurer를 구성해 Spring Security의 Configuration을 커스터마이징 가능
- Username/Password 기반의 로그인 인증은 OncePerRequestFilter 같은 Spring Security에서 지원하는 다른 Filter를 이용해서 구현할 수 있고, Controller에서 REST API 엔드포인트로 구현하는 것도 가능
- Spring Security에서는 Username/Password 기반의 로그인 인증에 성공했을 때, 로그를 기록하거나 로그인에 성공한 사용자 정보를 response로 전송하는 등의 추가 처리를 할 수 있는 AuthenticationSuccessHandler를 지원하고, 로그인 인증 실패 시에도 마찬가지로 인증 실패에 대해 추가 처리를 할 수 있는 AuthenticationFailureHandler를 지원
- JWT는 JWS(JSON Web Token Signed)라고도 함
- SecurityContext에 Authentication을 저장하게 되면, Spring Security의 세션 정책에 따라서 세션을 생성할 수도, 안할 수도 있음
- SecurityContext에 클라이언트의 인증 정보(Authentication 객체)가 저장되지 않은 상태로 다음 Security Filter 로직을 수행하다보면 결국에는 AuthenticationException이 발생하게 되고, 이 AuthenticationException은 AuthenticationEntryPoint가 처리
- AccessDeniedHandler는 인증에는 성공했지만, 해당 리소스에 대한 권한이 없을 경우 호출되는 핸들러
▶ 다른 사람에게 설명할 수 있는가?
코드를 작성해보면서 흐름에 대한 부분은 이해가 잘 되어서, 설명할 수 있을 것 같다.
▶ 아직 이해되지 않은 내용은 무엇인가?
항상 '예시 코드를 참고하지 않고, 능동적으로 코드를 구현할 수 있는가'가 문제이다.
▶ 이해되지 않은 내용을 보완하기 위해서 나는 무엇을 할 수 있는가?
내용을 계속 반복 복습하며, 코드를 많이 쳐보면 자연스레 익혀지지 않을까 생각된다.
▶ 오늘 나의 학습 만족도는 어느 별 5개 중 몇 개를 줄 수 있는가?
- ★★★★★
오늘은 컨디션이 괜찮아서 집중있게 학습한 것 같다.
근데 정규 학습 시간 내에 학습 내용들을 모두 끝마치친 못했다..ㅜ
그래도 고생했다 :)
'생각 정리' 카테고리의 다른 글
2022. 11. 28. (0) | 2022.11.28 |
---|---|
2022. 11. 25. (0) | 2022.11.25 |
2022. 11. 23. (1) | 2022.11.23 |
2022. 11. 22. (0) | 2022.11.22 |
2022. 11. 21. (0) | 2022.11.21 |