본문 바로가기

Spring Boot/Spring Boot

50 : /test - sequence diagram

 

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() 란 

 시큐리티가 가지고있는 정보에서 인증정보를 가지고 온다

 


아래는 내가 만들어본 다이어그램. 확실히 불필요한 부분이 많이 들어있다..