Confluence 에 심각한 보안 취약점이 발견되었으니 사용자분들은 업그레이드 하세요.!
 
1
0
-1

안녕하세요.

현재, 인증 관련 부분은 JWT로 구현되어 있습니다.

프로세스는 다음과 같습니다.


상황: 인증 과정이 필요한 API에 데이터를 요청을 하고, 응답값을 받고자 한다.

  1. 사용자가 데이터 요청 버튼을 클릭
  2. 서버에서 token을 검사함. 이때, "토큰이 만료되었다 && 갱신이 가능하다"면 토큰을 갱신하여 돌려보냄
  3. 프론트에선 토큰이 갱신되었단 응답을 받으면, 갱신된 토큰과 함께, 이전 요청을 다시 보냄
  4. 사용자는 원하던 데이터를 받게됨. (정상)


이것은.. 프론트엔드에서 토큰의 수명을 신경쓰지 않을 수 있고.. 토큰이 만료되었을 때 유저에게 재요청을 요구하지도 않는 프로세스라고 생각하고 작성했습니다만... 문제는 생각치 못한 곳에서 발생했네요. 문제는 다음과 같습니다.


위와 같은 상황에서 2번 이상 연속으로 요청했을 때.. (여기선 2번의 요청, 각 a, b라고 가정하겠습니다.)


a요청 후, a요청이 돌아오기전에 b요청을 했을 때, (a요청은 pending 상태)

이때, a요청에 대해 토큰을 새로고쳤다면 b요청은 이전 토큰(블랙리스트에 등록된)으로 간 상태 → 401 발생


이 부분을 해결하기 위해.. 어떤 방법이 있을지.. 궁금하네요.


토큰의 수명을 길게하면 빈도는 줄어들겠으나, 근본적으로 해결되진 않을 것이고...


다른 생각이 나지 않네요.


신선한 방법이 필요한 것 같습니다. 도와주십쇼... ㅠㅠ

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      갱신을 위한 api를 따로 두어 토큰만료 예외 응답을 받은 클라이언트가 갱신 api를 호출하고 갱신된 토큰을 얻어 원래 요청하려던 리소스에 다시 접근하는게 정석일듯 합니다. 

      1. 김영우

        안녕하세요~

        답변 감사합니다, 답글을 늦게 봤네요.

        다만, 질문에 대한 이해가 잘못된 것 같네요..

        토큰을 재발급해주는 API만 달라질뿐이지 문제는 해결되지 않습니다.

        ㅠㅠ

      CommentAdd your comment...