프로젝트 ymd - oauth 개발 (google)

종종2·2023년 9월 20일
0

google-oauth를 통해 소셜로그인이 가능하도록 프로젝트 로그인을 추가하려고 한다.

프로젝트의 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을 발급받는다. 계속 고민해보고 거듭했던 로직이여서 조금 어려웠던 것 같은데, 조금 해결점을 찾은 것 같다. 이렇게 하면 현재 상황은 아래로 정리해볼 수 있을 것 같다.

  • 장점 : 현재 코드의 일관성을 부여할 수 있다. 모든 api에 accessToken을 검증하도록 설계를 했다. 이렇게 하면 보안적인 측면에서도 괜찮은 부분같다.
  • 단점 : google이 제공하는 모든 서비스를 활용 못할 수도 있다. 현재는 단지, google-login을 거쳐서 내 로컬 사이트에 가입하는 추가적인 절차때문에 실상 온전히 구글로만 로그인을 하는 느낌은 아닌느낌이다.
profile
나 이현종

0개의 댓글