OAuth 2.0은 서드파티 애플리케이션이 사용자의 자원에 안전하게 접근할 수 있는 권한 위임 표준 프로토콜이다. "Google로 로그인", "GitHub 계정 연동"의 기반이다.
주요 개념
| 용어 | 설명 |
|---|
| Resource Owner | 사용자 (자원 소유자) |
| Client | 서드파티 애플리케이션 |
| Authorization Server | 인증·권한 발급 서버 (Google, GitHub) |
| Resource Server | 보호된 자원을 제공하는 서버 |
Authorization Code Flow (가장 안전)
1. 사용자 → 클라이언트: "Google로 로그인" 클릭
2. 클라이언트 → 인증 서버: 인증 요청 (redirect)
GET https://accounts.google.com/oauth/authorize
?client_id=...&redirect_uri=...&scope=email
3. 사용자 → 인증 서버: 로그인 + 권한 허용
4. 인증 서버 → 클라이언트: Authorization Code 반환
5. 클라이언트 → 인증 서버: Code + Secret으로 Access Token 요청
6. 인증 서버 → 클라이언트: Access Token 발급
7. 클라이언트 → 리소스 서버: Access Token으로 API 호출
Access Token 활용
python
import requests
headers = {"Authorization": f"Bearer {access_token}"}
response = requests.get("https://api.github.com/user", headers=headers)
user_data = response.json()
| 항목 | OAuth 2.0 | OpenID Connect |
|---|
| 목적 | 권한 위임 | 인증 (로그인) |
| 관계 | 기반 | OAuth 2.0 위에 구축 |
| ID Token | 없음 | JWT 형식 ID Token 제공 |
관련 개념
- •JWT — OAuth에서 Access Token으로 활용
- •SSL/TLS — OAuth 통신 암호화
- •REST API — OAuth로 보호하는 API
참고문헌
- •RFC 6749 — The OAuth 2.0 Authorization Framework