인사말
안녕하세요. 오늘은 OAuth2에 대한 기술적 내용을 정리해보려고 합니다.
OAuth2는 사용자가 직접 회원가입을 하지 않고, Google이나 Naver와 같은 외부 플랫폼의 계정을 이용해 간편하게 로그인할 수 있도록 도와주는 인증 방식입니다. 최근 다양한 서비스에서 이 기능을 제공하고 있기 때문에, 그 필요성을 느껴 저도 직접 OAuth2에 대해 학습해보게 되었습니다
로직
이번 글에서는 Google을 예시로 설명드리지만, 다른 플랫폼들도 OAuth2 표준을 따르기 때문에 기본 흐름은 유사합니다. 다만 세부적인 요청 URL이나 데이터 형식 등은 각 플랫폼의 개발자 문서를 참고하셔야 합니다.
단계별 설명
-
Redirect 요청
클라이언트가 Google 로그인 버튼을 클릭하면, 서버는 Google 인증 페이지로 리디렉션 시킵니다. -
유저 로그인 및 동의
Google은 사용자에게 로그인 정보를 요청하고, 해당 서비스가 접근하려는 정보(예: 이메일, 이름 등)에 대해 동의를 구합니다. -
Authorization Code 전달
사용자가 동의하면, Google은 서버에 미리 등록된 redirect URI로 Authorization Code를 전달합니다. -
Access Token 요청 및 사용자 정보 수신
서버는 받은 Authorization Code로 Access Token을 요청하고, 해당 토큰을 통해 사용자 정보를 받아옵니다. -
회원가입 또는 로그인 처리
-
회원가입: provider, id, email 등의 정보를 데이터베이스에 저장합니다.
-
로그인: 기존 유저 정보를 조회한 뒤 인증 과정을 진행합니다.
-
-
JWT 발급 및 인증 처리
로그인에 성공하면, 서버는 JWT 토큰을 생성하여 클라이언트에 전달하고, 이후 클라이언트는 이 토큰을 사용해 인증된 요청을 수행할 수 있습니다.
마무리
OAuth2 인증 과정을 정리하면서, 백엔드 인증 구조에 대한 흥미와 이해도를 높일 수 있었습니다.
다음 글에서는 NestJS를 활용해 OAuth2 인증 과정을 실제 코드로 구현한 예제를 소개해드릴 예정입니다.
내용 중 틀린 부분이 있거나 추가 질문이 있으시다면 댓글로 남겨주세요.
읽어주셔서 감사합니다.
