Thief of Wealth

다라쓰의 로그인 인증방식은 refreshToken을 발급받음으로서 accessToken을 서버로부터 받을 수 있는 방식으로 구현되어 있습니다.

(기존에는 cookie등의 클라이언트 저장소에서 accessToken을 가지고 있는 방식이었는데, 보안상 취약점이 걱정되어 수정했습니다.)

 

그리고 accessToken을 재발급받을때마다 서버에서의 refreshToken은 새롭게 갱신됩니다.

 

처음에는 refreshToken의 갱신이 잦음으로 보안이 뛰어날 것이라는 생각에 동의했었습니다.

 

그런데 지금에서야 뭔가가 이상함을 깨달았습니다.

동시에 로그인했을 경우 어떻게 하지?

 

지금껏 모든 가정은 한 곳에서 로그인하는 상황만 가정되었습니다.

또한, 테스트를 할때에도 로그인 vs 비로그인, 비로그인 vs 비로그인, 네이버 로그인 vs 카카오 로그인 계정으로 테스트를 했었지,

동일계정 로그인 vs 동일계정 로그인으로 테스트 해본적은 없었습니다.

 

현재 동일계정으로 로그인을 하게되면, 한쪽 브라우저에서는 refreshToken을 새로 발급받았는데, 다른 브라우저에서는 이전 refreshToken을 가지고 있기 때문에, 새로고침 후 새로 accessToken을 받아올 수 없게 됩니다.

 

즉, 동시에 로그인할 수 없는 이슈가 생긴것입니다.

솔직히 그런일은 적을 것이라 생각되지만, 다라쓰를 PC와 모바일에서 동시에 사용하고 있는 유저인 경우에는 조금 불편할 수 있을 것이라 생각됩니다.

 

지금 이를 해결할 수 있는 방법은 없습니다.

refreshToken을 갱신 타이밍을 지연시키거나.. 해야할것 같은데 아직 마땅한 방법은 떠오르지 않습니다.

 

대신에 중복 로그인시, accessToken이 실패하는 예외처리를 해주었습니다.

 

https://github.com/woowacourse-teams/2021-darass/pull/786

 

[FE][공통] 로그인 실패 예외 처리 by zereight · Pull Request #786 · woowacourse-teams/2021-darass

다른 브라우저에 로그인을 하게되면, 기존 브라우저의 refreshToken이 만료되어 요청이 실패하는데 그에 대한 대응을 추가

github.com

 

 

 

 

 

profile on loading

Loading...