작성
·
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
클라이언트단에서도 토큰을 탈취당하지 않게 방법을 고려해야하고, ip의 위치를 받아서 평소사용자가 가지 않는지역이나 해외접속이라면 사용자에게 알림을 주는 형태로 방어를 해야하지 않을까 싶습니다!
답변 감사합니다!!
답변글 보고 다시 질문 드립니다.
=============
Refreah token 자체가 탈취됐을때는 로그아웃을 통해서 기존토큰을 만료처리해주면 refresh token을 이용하지 못할것입니다.
==============
이부분은 이해가 가는데
Refresh Token 탈취를 감지하고 로그아웃 로직을 수행하면 될듯 한데
제가 이해를 못한것인지 Refresh Token이 탈취 당했는지는 서버측에서 알 수가 없지 않나요? (즉 실제 사용자가 로그아웃 까지 하지 않는 상태)
알 수만 있다면 바로 로그아웃 로직을 수행하면 될듯한데요
한 A 이라는 사용자가 브라우저 쿠키에
Access Token (유효기간 30분)
Refresh Token (유효기간 하루)
저장 되어 있는 상태이고 (아직 로그아웃 하지 않았음)
만약 B 사용자에게 Refresh Token 을 탈취 했다고 가정했을때
B 사용자는 Refresh Token 을 이용해서 새로운 Access Token 발급 받으면서 나쁜 행위를 할 수 있다는 건데요 ㅠ,ㅠ
이럴 경우는 방법은 없는건가요?