개요
앱이나 웹에서 인증을 구현할 때 token
을 같이 보내는 방식으로 구현하는 경우가 많다.
단, 그럴 때 인증 토큰 외에 refresh token
이라는 것을 함께 보내기도 한다. 이렇게 하는 이유는 뭘까?
리프레시 토큰 (refresh token
) 을 사용하는 이유
access token 의 취약점
access token
과 같은 모든 토큰에는 탈취라는 취약점이 존재한다.- 탈취를 방지하기 위해 보통
access token
은 짧은 유효기간 (ex. 30분) 을 가지고 있다. - 만일 유효기간이 존재하지 않는다면, 해커는 한번 탈취한 계정의 토큰을 평생 이용할 수 있을 것이다.
이렇게 토큰에 유효기간을 주는 것은 보안적으로는 장점이지만, 일반 이용자는 토큰이 만료될 때마다 다시 ID 와 패스워드를 인증해야 하는 등의 불편함이 생긴다.
보안을 강화한 refresh token
을 이용하여 편의성을 증대
- 이러한 불편을 해소하기 위해서
refresh token
이라는 것을 발급한다. - 이
refresh token
은 탈취에 매우 민감하여, 암호화된 저장소에 존재하고 또한 등록된 기기에서만 작동하는 경우가 많다.- 이를테면, 구글은 보통 한번 로그인 해두면 브라우저를 껐다 켜거나 심지어 컴퓨터를 껐다 켜도 로그인이 풀리지 않는다. 이는 디바이스 단에서
refresh token
과 같은 것을 보유중이기 때문에 가능한 것이다. - 구글은 DB 에 해당
refresh token
을 이용 가능한 디바이스를 DB 와 같은 곳에 저장해놓는다. - 보안을 위해 구글 이용 중 새로운 기기로 구글 계정 로그인을 시도하면 처음 이용되는 기기의 경우엔 휴대폰 인증 등을 해야하는 경우를 종종 본적이 있을 것이다.
- 이로 인해, 탈취 당하더라도 기기가 다르다면 문제가 생기지 않는다.
- 이를테면, 구글은 보통 한번 로그인 해두면 브라우저를 껐다 켜거나 심지어 컴퓨터를 껐다 켜도 로그인이 풀리지 않는다. 이는 디바이스 단에서
반응형
'보안' 카테고리의 다른 글
Authentication 앞에 Basic 혹은 Bearer 를 붙이는 이유 (인증 방식) (1) | 2024.01.13 |
---|---|
스프링 시큐리티에서 Authority 와 Role 의 차이는? (2) | 2023.12.05 |
Method Security of 스프링 시큐리티 (0) | 2022.05.07 |
CSRF 공격 정리 (feat. 스프링 시큐리티) (0) | 2022.05.03 |
JWT(Json Web Token) 이란 무엇이며 왜 사용하는가? (0) | 2022.05.03 |