1. 토큰이 없을때
JwtRequestFilter - request.getHeader("Authorization")의 정보가 null이다. 따라서 if문을 통과하지 못하고
401 error와 "JWT Token does not begin with Bearer String" 예외가 발생한다
2. 틀린 토큰값
JwtRequestFilter - request.getHeader("Authorization")에 정보는 들어있어서 if문에 들어간다.
jwtTokenUtil - getUsernameFromToken으로 이동 후 getClaimFromToken(token, Claims::getId)
에서 401 error 에러가 발생하고 "Unable to get JWT Token" 예외가 발생한다
3. 유효기간 지난 토큰
JwtRequestFilter - request.getHeader("Authorization")에 정보가 들어있어서 if문안에 들어간다.
jwtTokenUtil - getUsernameFromToken으로 이동 후 getClaimFromToken(token, Claims::getId)에서
getAllClaimsFromToken(token)으로 이동한다 401 error "JWT Token has expired" 예외가 발생한다
4. 유효한 토큰
JwtRequestFilter - request.getHeader("Authorization")에 정보가 들어있어서 if문안에 들어간다.
jwtTokenUtil - getUsernameFromToken으로 이동 후 getClaimFromToken(token, Claims::getId)
그리고 getAllClaimsFromToken(token)를 거쳐 다시 JwtRequestFilter 로 넘어온다
다음 if문에서 JwtUserDetailsService - loadUserByUsername(username)로 이동. 여기서
findByEmail(email)를 통해 찾은 email로 Email의 형태에 따라 권한을 부여하고 jwtTokenUtil로 넘어온다
jwtTokenUtil - validateToken(jwtToken, userDetails) 에서 token값의 username과 DB의 username을 비교 후
authenticationToken을 생성한다.
testController - rootTest() > TestService - getTestList() > ApiResponse(boolean success, T data)
여기서 SecurityContextHolder.getContext().getAuthentication() 란
시큐리티가 가지고있는 정보에서 인증정보를 가지고 온다
아래는 내가 만들어본 다이어그램. 확실히 불필요한 부분이 많이 들어있다..
'Spring Boot > Spring Boot' 카테고리의 다른 글
53 : JPA로 삭제와 리스트 출력 review (Springboot + JPA) (0) | 2021.10.26 |
---|---|
51 : JPA로 CRUD 기능 구현 (SpringbootApi) (0) | 2021.10.25 |
49 : /authenticate - Sequence Diagram (Springboot) (0) | 2021.10.14 |
45 : Springboot(글 수정 기능) (0) | 2021.10.10 |
44 : Springboot(글 읽기 비즈니스 로직 추가) (0) | 2021.10.08 |