Backend Engineering

OAuth 2.0 개념 정리

zamezzz 2025. 6. 5. 15:01

이번 글에서는 OAuth 2.0 인증 방식에 대해 간단히 정리해보겠습니다.

 

■ OAuth 2.0 이란?

OAuth는 ‘내 계정 정보를 제3의 서비스에 맡기지 않고도 인증할 수 있는 방식’입니다.
대표적인 예시로는 구글, 네이버, 카카오 등의 ‘소셜 로그인’이 있습니다.

 

해당 서비스에서는 각 로그인 페이지를 사용자에게 제공하고, 사용자는 여기서 ID/PW 를 입력하여 인증을 합니다.

그리고 그 인증 과정 처리가 진행되고, 우리 서비스에는 그 결과가 돌아옵니다.

 

OAuth 2.0의 주요 특징은 아래와 같습니다.

  • 인증과 권한 부여(Authorization)를 분리함
  • 사용자 비밀번호를 제3자 서비스에 넘기지 않음
  • Access Token을 통해 자원 접근을 위임함
  • 다양한 Grant Type(인증 방식)을 지원함
    → Authorization Code, Implicit, Client Credentials, Resource Owner Password 등

 

■ OAuth 2.0 핵심 용어 및 흐름 

핵심 용어는 아래 네 가지입니다.

Resource Owner 사용자 (ex. 나)
Client 제3자 앱 (ex. 어떤 서비스에서 ‘구글 로그인’ 누름)
Authorization Server 인증을 처리하는 서버 (ex. Google)
Resource Server 실제 자원이 있는 서버 (ex. Google의 사용자 정보 API)

 

출처 : 구글 OAuth2.0 가이드

 

위 그림이 주요 인증 흐름이고, 이를 좀더 예시와 함께 구현 설명하면 아래와 같습니다.

 

① 사용자가 "구글로 로그인" 클릭

② 클라이언트는 구글 Authorization Server로 인증 요청

③ 사용자는 구글 로그인 후, 동의 화면에서 권한을 허용

④ 구글은 클라이언트에 "Authorization Code" 전달 (Redirect)

⑤ 클라이언트는 Authorization Code로 Access Token 요청

⑥ 구글은 Access Token + (옵션) Refresh Token 발급

⑦ 클라이언트는 Access Token으로 Resource Server의 API 호출

⑧ 사용자 정보 등 필요한 데이터를 받아옴

 

 

OAuth 2.0에서도 JWT와 마찬가지로 토큰이 사용됩니다.

accessToken과 refreshToken 개념이 다시 나오는데, 한 번 더 정리하고 넘어가겠습니다.

  • accessToken: 실제 API 호출 시 사용하는 토큰 (유효기간 짧음)
  • refreshToken: accessToken이 만료되었을 때 재발급받기 위한 토큰 (보통 서버 저장)

refreshToken은 민감하므로 서버에서만 보관하거나, 안전하게 관리되어야 합니다.

 

 

OAuth 2.0은 ‘인증’이라기보다는 ‘권한 위임’ 이라고 볼 수 있습니다.

처음엔 구조가 복잡하게 느껴질 수 있지만, 하나씩 흐름을 따라가다 보면 이해할 수 있습니다.

그리고 대부분의 처리를 해주기 때문에 생각보다는 쉽게 구현이 가능합니다.

 

그럼 OAuth 2.0에 대한 정리를 마치겠습니다.