study

토큰에 대해 알아보자 - access token, refresh token

정영감3 2024. 3. 31. 23:03
728x90

 

 

유저들이 들어오는 경로를 뜯어보다 보니 내 생각보다 로그인 비율이 높았다. (DAU의 10%)

 

생각되는 문제 

1. 로그인 화면에 문제가 있다? 

2. 재로그인이 많다면 기존 유저들이 뭔가 불편을 겪는 상황? 또는 우리 서비스를 어뷰징하는 상황? (비밀번호 틀려서 실패도 많았음) 

3. 앱 재설치가 많다? (삭제, 재설치가 많다?) 

 

그래서 로그인이 풀리는 상황을 찾다보니 토큰까지 왔다. 지금은 개발팀에서 설정한 토큰을 그냥 유지했던 상황. 

우선 토큰 기간을 조절하는게 간단한 실험/해결책인 것 같아서 토큰을 조절하기로 했다. 

근데 어떤 기준으로 해야하지? 생각하다보니 토큰의 종류까지 찾아보게 됨. 

 

 

토큰에 대해 알아보자 

GPT says.. 

  1. Access Token (액세스 토큰):
    • 역할: 주로 서비스 또는 리소스에 대한 액세스를 인증하는 데 사용됩니다.
    • 유효 기간: 보통 짧은 기간 (예: 몇 분에서 몇 시간)
    • 동작 방식: 사용자가 인증을 성공적으로 완료하면, 서버는 사용자를 대신하여 해당 리소스에 액세스할 수 있는 토큰인 "액세스 토큰"을 발급합니다.
    • 사용: 클라이언트 애플리케이션은 이 액세스 토큰을 사용하여 서비스 또는 리소스에 요청을 보냅니다. 일반적으로 API 요청의 헤더에 포함됩니다.
  2. Refresh Token (리프레시 토큰):
    • 역할: 액세스 토큰을 갱신하는 데 사용됩니다. 주로 보안을 강화하고 사용자 경험을 향상시키기 위해 사용됩니다.
    • 유효 기간: 보통 더 긴 기간 (예: 몇 일에서 몇 달)
    • 동작 방식: 사용자가 로그인할 때 발급되며, 액세스 토큰이 만료되면 이를 사용하여 새로운 액세스 토큰을 요청합니다.
    • 사용: 액세스 토큰이 만료되었거나 만료되기 직전에, 클라이언트 애플리케이션은 리프레시 토큰을 사용하여 새로운 액세스 토큰을 요청합니다. 이를 통해 사용자가 자동으로 로그인 세션을 유지할 수 있습니다.

간단히 말하면, 액세스 토큰은 서비스나 리소스에 직접적으로 액세스하는 데 사용되는 반면, 리프레시 토큰은 액세스 토큰을 갱신하고 사용자의 로그인 상태를 유지하는 데 사용됩니다.


 

즉, api는 access token, 로그인은 refresh token 으로 이해하면 될 듯 

 

여기서 내가 조절하려는 건 리프레시 토큰. 

(참고로 리프레시토큰이 있기 때문에 access token 주기를 짧게 관리할 수 있다고 한다) 

보통 한 달 주기 사용이니까 5주로 늘릴까? 했는데 너무 그냥 고른 숫자 같아서 다시 찾아보기로 했다. 

 

 

MS - 90일 (단, 싱글페이지앱은 24시간) 

링크드인 - access token 60일, refresh token 1 yr. (link)

구글 - 별도 만료 없음. 계정 설정에서 revoke 하는 경우에만 

The main concept of the refresh token is that it is long-lasting and never expires. 

 

 

5주는 확실히 짧은 것 같고,, 보안에 문제가 없다면 6개월 ~ 1년까지 해보는 건 어떨까? 팀과 논의해봐야겠다. 

결론은 나 혼자 내릴 수 없으니까. !! 

 

참고로 해당 개발 반영 후 로그인한 건들만 해당 기간으로 설정된다고 한다.

쓰다보니 생긴 궁금증. 예를 들어  3/1 A계정 앱 로그인 된 상태 - [3/5 토큰 기간 연장 배포] - 3/7 A계정 유저 앱 접속(로그인 된 상태) => 이때 A계정의 토큰 유효기은 갱신되는가? -> 아마도 아닐 것 같은데 물어보기.. 

 

 

내가 토큰 조절로 기대하는 바 

- 로그인 실패 api 호출 감소 

- 기존 유저의 재로그인 시도 감소 (dau 는 유지하면서)