google-oauth를 통해 소셜로그인이 가능하도록 프로젝트 로그인을 추가하려고 한다.
현재 프로젝트의 Oauth전략이다.
oauth는 accessToken과 refreshToken에 대한 정책과 만료기간이 다르니 해당 공식문서를 꼭 확인해야한다.
accessToken관련 정책 공식문서
refreshToken관련 정책 공식문서
여기서 구글에서 refreshToken은 첫번째 승인시에만 반환된다고 한다.
내 사이드 프로젝트에서는 로그아웃 로직을 refreshToken은 로그아웃하게 되면 레디스에 ttl 2주로 적용하여 레디스에 저장하도록 하였다.
그렇게 하여 악의적인 사용자가 refreshToken을 탈취할 경우에, redis에 검사하여, refreshToken이 일치하는 값이 있으면, 악의적인 사용자로 간주하고 accessToken을 발급해주지 않는 로직이다.
1.구글 로그인을 통하여, 첫 로그인만 passport-google-oauth2.0을사용.
2.첫 로그인시, 추가 회원가입.
3.자체적인 accessToken과 refreshToken을 발급
이렇게 일련의 과정을 거쳐, 자체적인 accessToken과 refreshToken을 발급받는다. 계속 고민해보고 거듭했던 로직이여서 조금 어려웠던 것 같은데, 조금 해결점을 찾은 것 같다. 이렇게 하면 현재 상황은 아래로 정리해볼 수 있을 것 같다.