오늘은 refreshToken을 적용해 보기로 했다.
RefreshToken
refreshToken의 사용 이유
AccessToken을 사용했을 때 서버가 상태를 보관하고 있지 않고 토큰에 사용자 정보 등이 담겨있는데 이 때 토큰을 탈취당한다면 사용자의 정보와 제어권 등을 빼앗기게 되는 보안 문제가 발생한다.
이 경우에는 AccessToken의 유효기간을 짧게 하면 문제가 해결되지만 이럴 경우에 사용자는 토큰이 만료될 때 마다 로그아웃이 되는 불편함을 겪게 된다.
이를 해결하기 위해 RefreshToken을 사용한다.
RefreshToken은 AccessToken 의 유효기간이 끝나면 AccessToken을 재발급 받기 위해 사용된다.
RefreshToken의 동작 방식
클라이언트가 로그인을 성공하면 서버에서 RefreshToken과 AccessToken을 함께 넘겨준다.
그 이후에 AccessToken이 만료되면 클라이언트는 RefreshToken을 서버에 전달하여 토큰이 유효한지 등을 검사하여 유효할 경우에 다시 AccessToken을 발급해준다
Refresh토큰에 대해 공부하고 프로젝트에 적용을 해본 결과 작동이 잘 되는것을 확인했다.
하지만 프론트가 테스트하면서 새로 배포한 환경에서 로그인을 했을 경우에 갑자기 오류가 생기는 것을 확인했다.
일바로그인은 잘 작동됐지만 문제는 카카오로그인에서 발생했다.
토큰에 유저 정보가 담겨있지 않은 것이 문제엿는데 이를 확인해보니 토큰 발급시에 userId로 user의 정보를 찾고 토큰을 발급했는데 우리 로그인 방식에 userId가 아닌 userEmail을 id 대신 사용하고 있었고 이를 바꿔주니 문제가 해결되었다.
이러한 문제가 발생한 원인은 내가 코드를 다 이해하고 짠 것이 아니여서 이러한 문제가 발생했다고 생각한다.
문제를 해결하면서 토큰의 발급 방식이나 토큰의 동작등에 대해 다시 공부해 봤다.

'TIL(Today Ingwang Learned)' 카테고리의 다른 글
TIL) 2023-01-20(실전 프로젝트) (0) | 2023.01.23 |
---|---|
TIL)2023-01-19 (실전 프로젝트) (0) | 2023.01.20 |
TIL) 2023-01-16(실전 프로젝트) (0) | 2023.01.16 |
TIL) 2023-01-14 (실전 프로젝트) (0) | 2023.01.15 |
TIL) 2023-01-13 (실전 프로젝트) (0) | 2023.01.14 |