JWT Token 인증 로그인 방식

morningstar·2021년 6월 21일
1

토큰 인증 방식은 정해진 형태가 없기 때문에 나만의 방식으로 Token을 이용한 로그인을 구현해보았다.

SignIn

  1. POST /v1/auth/signin
    • username과 password를 Request로 받아서 회원 정보가 일치하면 Refresh Token과 Access Token을 Response로 넘겨준다.

    • 로그인에 성공하면 Redis에 Refresh Token을 저장한다. 이때 **Redis의 (key, value)값은 (userId, refreshToken)**으로 저장한다.

Refresh Token

  1. POST /v1/auth/token/refresh
    • Access Token이 만료되면 Refresh Token을 Request로 받아서 Access Token을 재발급한다.

    • Refresh Token이 유효한지 확인하고 Redis에 Refresh Token이 존재하면 Access Token을 재발급한다.

SignOut

  1. DELETE /v1/auth/signout
    • Refresh Token을 Request로 받아서 로그아웃한다. 이때 클라이언트에서는 Local Storage에 저장되어 있는 Access Token과 Refresh Token을 모두 폐기한다.

    • Redis의 (userId, refreshToken) 값을 삭제한다.

    • Refresh Token은 Redis(BlackList)에 저장한다. **Redis의 (key, value)값은 (black-userId, refreshToken)**으로 저장한다.

      • 로그아웃한 회원의 Refresh Token으로 Access Token을 재발급받을 수 없도록 Refresh Token을 blacklist에 저장해야 한다.

갑분 Redis?

Refresh Token은 Access Token을 재발급하거나 blacklist에 등록됐는지 확인하는 용도로 사용한다.

RDB인 MYSQL에 Refresh Token 테이블과 BlackList 테이블을 만들어 사용할 수도 있지만

**NoSQL인 Redis로 Refresh Token만 빠르게 읽고 쓸고, expiration을 설정하여 Redis(BlackList)에서 시간이 지난 Refresh Token을 자동으로 삭제(관리)**할 수 있기 때문에 Redis를 사용하기로 했다.

profile
오늘 달리면 내일 걸을 수 있다!

0개의 댓글