로그아웃 알아보기

cabbage·2023년 2월 19일
0

기타

목록 보기
11/26

로그아웃

  • 로그아웃의 경우 유저가 로그인할 때 발급한 액세스 토큰과 리프레시 토큰을 무효화해야 한다.

로그아웃 API 요청 처리하기

  • 로그아웃 API 요청이 오는 경우
    • 액세스 토큰과 리프레시 토큰을 헤더에서 뽑아낸다.
    • 헤더에서 뽑아낸 액세스 토큰과 리프레시 토큰을 사용해 토큰 유효성을 검증한다.
      • 유효성이 검증되지 않으면 에러를 던진다.
    • 액세스 토큰의 만료 시간에서 현재 시간을 뺀 만큼의 시간을 계산한다.(t1)
    • 리프레시 토큰의 만료 시간에서 현재 시간을 뺀 만큼의 시간을 계산한다.(t2)
    • Redis에 t1 시간동안만 액세스 토큰을 저장한다.
    • Redis에 t2 시간동안만 리프레시 토큰을 저장한다.
    • t1, t2 시간이 경과하면 Redis에서 액세스 토큰과 리프레시 토큰은 자동 삭제된다.

로그아웃 API 요청 이후 클라이언트 API 요청 처리하기

  • 로그아웃 API 요청 이후 클라이언트가 인가 과정이 필요한 API를 요청하는 경우
    • 액세스 토큰 strategy의 validate에서 클라이언트가 전달한 액세스 토큰을 사용해 Redis에서 액세스 토큰이 존재하는지 검증한다.
    • 이전에 로그아웃 API 로직 실행 시 액세스 토큰을 Redis에 저장하였다.
    • Redis에 저장한 액세스 토큰의 저장 만료 시간이 아직 경과하지 않아 클라이언트가 전달한 액세스 토큰과 동일한 액세스 토큰이 Redis에 아직 존재한다면 클라이언트의 요청을 거부한다.
    • 이미 만료된 액세스 토큰을 사용하고 있기 때문이다.
      만약 클라이언트가 전달한 액세스 토큰과 동일한 액세스 토큰이 Redis에 존재하지 않는다면 요청을 승인한다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글