오랜만에 TIL을 적어봅니다. 이틀간 spring project를 마무리 하면서 발생했던 일에 대해 회고록을 작성해 볼려고 합니다.
프로젝트의 요구사항은 깃허브에 기재되어 있으므로 이슈가 발생했거나 막혔던 부분을 위주로 작성해 볼려고 합니다. JWT 와 Spring Security 를 이용한 회원가입에서 이슈가 발생하였고 토큰을 생성하고 생성한 토큰을 api로 전달하는 과정을 구현하는데 어려움을 겪었다.
또한 User와 Admin 계정을 나누는데 있어 Admin계정을 구별하지 못하였으며 게시글과 댓글의 연관관계 매핑에 있어 이슈가 있었으나 해결하였다. 이전 회고 내용 : 연관관계 매핑
Tomcat
- Tomcat은 서블릿 컨테이너라고 불리며 다양한 필터와 서블릿으로 구성되어 잇다.
- 웹 개발 시 Dispatcher Sevlet 하위에 컨트롤러부터 시작하는 흐름을 보통 많이 다루는데 Spring Security는 필터 부분을 조작하게된다.
Spring Security
- Spring Security가 포함된 흐름도
- 여러가지의 필터로 이루어져 있으며 필터들이 순서대로 동작한다. 이러한 구조를 Filter Chain 구조라 한다.
Spring Security에서의 인증/ 인가
- Spring Security는 기본적으로 인증 절차를 거친 후 인가에 대한 절차를 진행하게 되며 인가 과정에서 해당 리소스에 대한 접근 권한이 있는지 확인을 하게된다. Spring Security에서는 이러한 인증과 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다.
Principal(접근 주체) : 보호받는 리소스에 접근하는 대상
Credential(비밀번호) : 리소스에 접근하는 대상의 비밀번호
SecurityContextHolder
SecurityContext
Authentication
UsernamePasswordAuthenticationToken
AuthenticationProvider
Authentication Manager
UserDetails
UserDetailsService
부끄럽지만 아직 수정중인 깃헙 공유
Github : developerchoi90