인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

리나님의 프로필 이미지
리나

작성한 질문수

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

Access Token 재발급

access token 같은 경우는 보통 만료시간을 짧게 안정성을 높이는것은 이해가 갑니다!

작성

·

1.2K

0

access token 같은 경우는 보통 만료시간을 짧게 가져가는데

구파고님 refresh token 발급 하는 소스를 보니

 

요청 헤더값에 refresh token 을 넣어서

다시 access token 발급 해주는데요

 

그런데 access token은 탈취 당해도 만료시간을 짧게 한다고 하지만

 

refresh token 경우 만료시간을 길게 잡는데 이것마저 탈취 당하면

 

누구나 accesstoken 발급 받게 되어서 문제가 발생되지 않나요?

보통 실무에서는 어떻게 하나요?...이럴 경우...

 

. 제가 조사도 안하고 막 질문 드린건지 ㅠ,ㅠ

 

여러 방면으로 생각해보았지만 방법이 없는거 같아서 ㅠㅠ

이렇게 질문 드립니다.

답변 1

0

구파고님의 프로필 이미지
구파고
지식공유자

Refreah token 자체가 탈취됐을때는 로그아웃을 통해서 기존토큰을 만료처리해주면 refresh token을 이용하지 못할것입니다.

새로운 환경에서 로그인하는경우 모바일인증등을 추가로 받을수있게할수도있구요

 

Access token 같은 경우 jwt 블랙리스트를 도입해서 사용하면 기존에 발급한 토큰도 사용하지 못하게할 수 있는데 아래 블로그 참고해보시면 좋을꺼같습니다.

https://velog.io/@boo105/Redis-%EB%A5%BC-%ED%86%B5%ED%95%9C-JWT-Blacklist-%EA%B5%AC%ED%98%84

리나님의 프로필 이미지
리나
질문자

답변 감사합니다!!

답변글 보고 다시 질문 드립니다.

 

=============

Refreah token 자체가 탈취됐을때는 로그아웃을 통해서 기존토큰을 만료처리해주면 refresh token을 이용하지 못할것입니다.

==============

이부분은 이해가 가는데

 

Refresh Token 탈취를 감지하고 로그아웃 로직을 수행하면 될듯 한데

제가 이해를 못한것인지 Refresh Token이 탈취 당했는지는 서버측에서 알 수가 없지 않나요? (즉 실제 사용자가 로그아웃 까지 하지 않는 상태)

알 수만 있다면 바로 로그아웃 로직을 수행하면 될듯한데요

 

한 A 이라는 사용자가 브라우저 쿠키에

 

  1. Access Token (유효기간 30분)

  2. Refresh Token (유효기간 하루)

저장 되어 있는 상태이고 (아직 로그아웃 하지 않았음)

만약 B 사용자에게 Refresh Token 을 탈취 했다고 가정했을때

B 사용자는 Refresh Token 을 이용해서 새로운 Access Token 발급 받으면서 나쁜 행위를 할 수 있다는 건데요 ㅠ,ㅠ

이럴 경우는 방법은 없는건가요?

구파고님의 프로필 이미지
구파고
지식공유자

클라이언트단에서도 토큰을 탈취당하지 않게 방법을 고려해야하고, ip의 위치를 받아서 평소사용자가 가지 않는지역이나 해외접속이라면 사용자에게 알림을 주는 형태로 방어를 해야하지 않을까 싶습니다!

리나님의 프로필 이미지
리나

작성한 질문수

질문하기