본문 바로가기

아카이브/dev-camp

dev-camp Day 3-1 : Access Token & Refresh Token

728x90

Access Token 

액세스 권한을 부여하기 위해 사용되는 토큰

Refresh Token

액세스 토큰이 만료될 때 새로운 액세스 토큰을 발급받기 위해 사용되는 토큰

Access Token & Refresh Token 작동 원리

  1. 로그인 인증에 성공한 클라이언트는 Refresh Token과 Access Token 두 개를 서버로부터 받는다.
  2. 클라이언트는 Refresh Token과 Access Token을 로컬에 저장해놓는다.
  3. 클라이언트는 헤더에 Access Token을 넣고 API 통신을 한다. (Authorization)
  4. 일정 기간이 지나 Access Token의 유효기간이 만료되었다.
    4.1. Access Token은 이제 유효하지 않으므로 권한이 없는 사용자가 된다.
    4.2. 클라이언트로부터 유효기간이 지난 Access Token을 받은 서버는 401 (Unauthorized) 에러 코드로 응답한다.
    4.3. 401를 통해 클라이언트는 invalid_token (유효기간이 만료되었음)을 알 수 있다.
  5. 헤더에 Access Token 대신 Refresh Token을 넣어 API를 재요청한다.
  6. Refresh Token으로 사용자의 권한을 확인한 서버는 응답쿼리 헤더 새로운 Access Token을 넣어 응답한다.
  7. 만약 Refresh Token도 만료되었다면 서버는 동일하게 401 error code를 보내고, 클라이언트는 재로그인해야한다.

참고 자료 : 

https://velog.io/@chuu1019/Access-Token%EA%B3%BC-Refresh-Token%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A0%EA%B9%8C


오늘 구현한 것: 

nodemailer를 이용한 회원 가입
https://github.com/verdantjuly/dev-camp/commit/d4bb0db25d5ddefe8f0117de8e794cd25dd5edbf

JWT를 이용한 로컬로그인

https://github.com/verdantjuly/dev-camp/commit/aed25016928ff60c0a2b19fe78716f5e244ea5dd

Google oauth login

https://github.com/verdantjuly/dev-camp/commit/dd2bd48bcea7f4a7fb0458a70f2553f0cddc6b03