takin17
4k
2022-06-16 17:34:17 작성 2022-06-16 17:36:55 수정됨
1
217

JWT 토큰 개념 흐름 질문드립니다.


1.로그인을 요청한다.

2.로그인 성공시 response에 token, refreshToken 2개를 반환한다.

3.서비스 요청시 api 헤더에 token을 싣고 api 요청을한다.

4.token을 싣고 api 요청시 만료가 되었다면 갱신 api 서비스가 자동으로 요청된다

ex) https://......./getRefreshToken

이때 refreshToken이 db에 저장되어 있기 때문에 누구의 user_id인지 안다 . 그러므로 기본 token을 갱신시 user_id 기반으로 조합하여 토큰을 갱신한다. 그리고 refreshToken도 새로 발급한다.(refreshToken을 만들때는 굳이 user_id조합하여 식별할 필요가 없다. db에 저장되어 있기 때문. 이건 개발자 마음...)


제가 이해한 내용 중 잘못되었거나 부족한 부분이 있을까요?

0
  • 답변 1

  • Doosies
    330
    2022-06-16 20:42:49 작성 2022-06-16 20:44:28 수정됨

    1. 서버로 로그인을 요청합니다.

    2. 로그인 성공시 액세스토큰, 리프레시 토큰 두개를 클라이언트에게 줍니다.

    3. 서비스 요청시 헤더에 액세스 토큰을 싣고 서버에 요청합니다.

    4. 서버에서 액세스 토큰 만료 응답이 왔으면 서버에 리프레스 토큰을 보냅니다.

    -> 이때 리프레시 토큰은 db에 저장되지 않습니다. 


    db에 리프레시 토큰이 저장되어 있기 때문에 누구의 user_id인지 아는게 아니라

    (1.)에서 로그인에 성공하면 이때 토큰의 페이로드에 아이디와 권한 정보를 담아서 서명합니다.

    그 후 서버에서는 토큰의 서명이 유효한지 확인 후 유효하다면 api에 대한 응답을 해줍니다.


    서비스에 따라 다르지만 보통 jwt를 도입하려할 때 서버에 저장되는건 없습니다.

    만약 모든기기에서 로그아웃 하기 등의 기능이 필요할 때만 db에 리프레시 토큰을 저장합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.