JWT..

Yangray·2025년 1월 2일

기존에 서비스가 java/jsp에서 react로 개편이 되면서 API도 로그인 부터 모든 기능을 수정이 필요하게 되어 작성하게 되었다.

간략하게 jwt에 대해 설명과 플로우를 요약해서 작성해본다.

JWT는 Json Web Token의 약자로 웹에서 토큰 인증 방식으로 많이 사용되는 방법으로
Json으로 만들어진 인증 관련 정보를 인코딩한 토큰이다.

토큰에는 payload(토큰에 대한 기본정보, 인증에 대한 서버측에 전달할 정보), 검증 되었음을 증명하는 sigature를 포함한다.

대략적인 흐름도는

  1. 클라이언트가 로그인 요청
  2. 서버가 인증 처리 ( DB에서 ID,password 일치여부 확인)
  3. JWT 토큰 생성 (일치 시)
  4. 클라이언트 토큰 저장
  5. 클라이언트는 API 요청 시 토큰 포함시켜 요청
  6. 서버가 요청을 받을 때 토큰을 검증
  7. 유효한 토큰인 경우 서버는 요청된 자원에 대한 접근을 허용시킴 아닐 경우 요청을 거부함

이렇게 토큰 인증 방식으로 서버가 사용자 세션을 따로 관리할 필요가 없어지고 토큰만으로 요청을 인증할 수 있는 장점이 생김

다만 주의할 점은
1. payload는 단순base64 인코딩으로 데이터가 노출될 위험이 크기 때문에 민감 정보는 기록하지 않아야 한다.
2. 토큰 만료 시간을 너무 짧게 주면 재인증 과정을 거쳐야 되는 문제가 생김

profile
시작은 미약하나 그 끝은 창대하리라

0개의 댓글