1. OAuth란 무엇인가?
OAuth(Open Authorization)는 사용자가 비밀번호를 직접 제공하지 않고도, 웹사이트나 애플리케이션이 다른 서비스의 사용자 정보에 안전하게 접근할 수 있도록 허용하는 개방형 인증/인가 프레임워크이다. 간단히 말해 OAuth는 제3자 애플리케이션이 사용자를 대신해 보호된 리소스에 접근할 수 있는 방법을 제공한다.

2. OAuth의 핵심 역할
OAuth 2.0은 네 가지 주요 역할을 기반으로 동작한다.
| 역할 | 설명 | 예시 |
|---|---|---|
| Resource Owner (리소스 소유자) | 보호된 리소스에 대한 접근 권한을 부여할 수 있는 주체 | 소셜 미디어 사용자 |
| Resource Server (리소스 서버) | 보호된 리소스를 호스팅하고, 액세스 토큰을 사용한 요청을 처리 | Google API, Facebook API |
| Client (클라이언트) | 리소스 소유자를 대신하여 보호된 리소스에 접근 요청 | 웹 앱, 모바일 앱 |
| Authorization Server (인가 서버) | 리소스 소유자를 인증하고 권한을 확인한 후 액세스 토큰 발급 | Google OAuth 서버 |
3. OAuth 플로우 과정

기본적인 OAuth 2.0 인가 과정은 다음과 같다.
- 클라이언트가 리소스 소유자에게 인가 요청
- 리소스 소유자가 인가 그랜트 제공
- 클라이언트가 인가 서버에 액세스 토큰 요청
- 인가 서버가 액세스 토큰 발급
- 클라이언트가 액세스 토큰으로 리소스 서버에 접근
- 리소스 서버가 보호된 리소스 반환
4. OAuth의 장점
- 보안성 향상: 비밀번호 대신 액세스 토큰을 사용하여 안전하게 인증한다.
- 제한된 권한 부여: 사용자는 특정 기능이나 데이터만 접근을 허용할 수 있다.
- 사용자 경험 개선: 기존 계정(Google, Facebook 등)으로 로그인할 수 있어 편리하다.
- 토큰 기반 관리: 액세스 토큰은 만료 시간이 있으며, 언제든지 철회 가능하다.
- 확장성과 표준성: 다양한 언어와 플랫폼에서 지원된다.
5. OAuth와 인증(Authentication)의 차이
OAuth는 본질적으로 인가(Authorization) 프로토콜이지 인증(Authentication) 프로토콜이 아니다.
- 인증(Authentication): 당신이 누구인지 확인
- 인가(Authorization): 당신이 무엇을 할 수 있는지 확인
인증 기능까지 필요하다면 OAuth 위에 구축된 OpenID Connect를 사용한다.
6. 실제 사용 사례
- 소셜 로그인: "Google 계정으로 로그인"
- API 접근: 제3자 앱이 Google 캘린더에 이벤트 추가
- 데이터 공유: 뉴스 웹사이트에서 Twitter로 기사 공유
- 모바일 앱 인증: Salesforce 모바일 앱이 사용자 데이터 접근
7. 결론
OAuth는 현대 웹 서비스에서 보안과 편의성을 동시에 충족하는 핵심 기술이다. 비밀번호 공유 없이 제3자 애플리케이션이 보호된 리소스에 접근할 수 있게 하여, 사용자 개인정보를 안전하게 보호하면서도 다양한 서비스 간 연동을 가능하게 한다. 인증까지 필요하다면 OpenID Connect를 함께 사용하는 것이 일반적이다.
'코딩 > 기초' 카테고리의 다른 글
| TypeScript 란? (0) | 2025.09.02 |
|---|---|
| [Web] MVC 아키텍처 패턴 정리: Model, View, Controller 분리 원칙 (1) | 2025.09.01 |
| [Web] RESTful API란? (2) | 2025.07.21 |
| [React] JWT를 활용한 사용자 인증 시스템 설계 및 구현 (3) | 2025.07.14 |
| [web] 세션 기반 인증과 토큰 기반 인증의 차이점 (1) | 2025.07.14 |