이번 글에서는 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) |

위 그림이 주요 인증 흐름이고, 이를 좀더 예시와 함께 구현 설명하면 아래와 같습니다.
① 사용자가 "구글로 로그인" 클릭
② 클라이언트는 구글 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에 대한 정리를 마치겠습니다.
'Backend Engineering' 카테고리의 다른 글
[Cache] Local Cache vs Redis, 언제 어떤 캐시를 써야 할까? (1) | 2025.06.16 |
---|---|
Spring Security를 활용한 인증 흐름 정리 (0) | 2025.06.09 |
JWT(Json Web Token) 간단 정리 (0) | 2025.06.02 |
MSA에서의 모니터링과 로깅 전략 (0) | 2024.03.03 |
MSA의 확장성과 효과적인 관리: 써킷 브레이커 (0) | 2024.03.02 |