JWT, 토큰을 만들고 다루는 과정에 대한 정리(feat. Node.js)

Bruce Han·2022년 1월 21일
1

JWT 발급 프로세스 정리


1. 'AccessToken' 발행(생성)


2. 발행한 AccessToken이 유효한지 검사하는 과정

토큰이 유효한지 검사(isOk? -> 정상/비정상)

토큰을 만들 때 로직은 이런 식으로
verify(jsonwebtoken 모듈에 내장돼있는 메서드) 메서드로 token 이라는 인자와 함께 config.secret(얘는 비밀키이다. 랜덤 secret 번호 생성기 로 영소문자+숫자를 섞은 secret 키를 발급해보자.), 마지막 인자로 (err, decoded)를 보내서 안에 있는 if문 부터 시작하는 과정을 거친다.

인가되지 않는 등 토큰이 정상적으로 발급되지 않았을 때 거칠 if문. 본인이 직접 커스텀해서 만들어야 할 에러 핸들러이다.
빨간색으로 표시한 것처럼 메시지를 띄워 인가되지 않은(인가에 실패한) 토큰이라고 표시를 해야 한다. 안 그러면 이게 토큰이 제대로 발급이 됐는지 안 됐는지 모른다.

jsonwebtoken모듈로 가면 jsonwebtoken을 만든 곳에서 공식적으로 제공하는 찐 유효성 검사 메서드들이 있다. 여기에서 실질적인 유효성 검사가 이뤄진다고 보면 된다.


3. 2번에서 발급된 토큰이 유효하지 않은 토큰이라면

-> 오류메시지를 출력한다.

ex) message: "잘못된 토큰임"


4. 2번에서 발급한 토큰이 유효한 토큰이면

4.1. 기간 이내인 경우
4.2. 기간이 만료된 경우

두 가지 경우로 나뉘게 된다.


5. 정상적으로 발급됐었던 토큰의 유효기간이 만료되면

=> 오류메시지를 출력한다.

when) 기간이 만료된 토큰을 가지고 서비스를 이용하려고 할 때 오류가 날 것이다. 그러면 토큰을 다시 발급을 받아야 하는데, 다짜고짜 다시 발급해줄 수는 없으니 일단 메시지를 띄운다.
ex) message: "기간이 만료된 토큰임. 다시 재발급하셈"

6. 토큰 재발급함에 앞서

6.1. AccessToken이 유효했던 토큰인지 확인이 되어야 한다.
6.2. 토큰의 기간을 확인한다.
6.3. 만약, AccessToken의 재발급을 위한 RefreshToken을 사용할 때 RefreshToken이 유효한지 확인한다. -> 역시 유효하지 않으면 미리 핸들링한 오류 처리 메서드를 실행시킨다.

7. 6번에서의 확인 작업들이 정상적으로 완료되면

-> AccessToken을 재발행한다. (RefreshToken 아니다) -> 재발급된 AccessToken으로 서비스 중인 페이지를 제공한다.

설명의 가독성을 위해 변수들은 파스칼 표기법으로 작성하였습니다.
글을 봐주신 분들께 압도적 감사.
지적을 해주시는 분들께 압도적 감사.
하트 눌러주시면 압도적 감사.

참고 : https://www.bezkoder.com/node-js-express-login-example/

profile
만 가지 발차기를 한 번씩 연습하는 사람은 두렵지 않다. 내가 두려워 하는 사람은 한 가지 발차기를 만 번씩 연습하는 사람이다. - Bruce Lee

0개의 댓글