📌 OAuth2 완전 정복 - 인증과 권한 부여의 표준 프레임워크
💡 OAuth2란?
OAuth2는 웹, 모바일, 데스크톱, IoT 등 다양한 클라이언트 애플리케이션이 제3자 서비스를 안전하게 접근할 수 있도록 돕는 인증 및 권한 부여 프레임워크입니다.
- 사용자 비밀번호를 노출하지 않고도 다른 앱이 사용자 데이터를 안전하게 접근 가능
- 오늘날 대부분의 API 서비스(Google, Facebook, GitHub 등)에서 표준으로 채택
🔐 OAuth2의 4대 구성 요소
구성 요소 설명
리소스 소유자 (User) | 리소스에 대한 액세스 권한을 가진 사용자 |
클라이언트 (Client App) | 사용자를 대신해 자원에 접근하려는 애플리케이션 |
권한 부여 서버 (Auth Server) | 사용자 인증 및 토큰 발급 담당 |
리소스 서버 (API Server) | 보호된 리소스를 제공하는 서버 (ex. 사용자 프로필 API 등) |
🔄 OAuth2 권한 부여 흐름 (Grant Types)
1️⃣ Authorization Code Grant (권한 코드 방식)
사용자가 로그인하고, 클라이언트는 인증 코드를 받아 엑세스 토큰을 발급받는 방식입니다.
흐름:
- 클라이언트 → 인증 서버에 로그인 페이지 요청
- 사용자가 로그인 → 권한 승인
- 인증 서버 → 인증 코드를 클라이언트에게 전달
- 클라이언트는 코드와 함께 엑세스 토큰 요청
- 엑세스 토큰 + 리프레시 토큰 발급
✔️ 보안성이 가장 높아 대부분의 웹 앱에서 사용
✔️ Google, Facebook 로그인 등에서 활용됨
2️⃣ Resource Owner Password Credentials Grant (비밀번호 방식)
클라이언트가 사용자 ID/비밀번호를 직접 받아 인증하는 방식
✔️ 신뢰할 수 있는 앱에서만 사용 (모바일 앱 등)
✔️ 보안상 위험이 있어 일반적으로 권장되지 않음
3️⃣ Client Credentials Grant (클라이언트 자격 증명 방식)
사용자가 없는 앱 간 인증 방식으로, 서버-서버 간 통신에 사용됩니다.
✔️ 사용자 개입 없이 API 접근이 필요한 시스템에 적합
✔️ 예: 마이크로서비스 간 통신
🧾 토큰의 종류 및 역할
토큰 종류 설명
Access Token | 리소스 서버 접근을 위한 자격 증명 (짧은 수명) |
Refresh Token | 만료된 Access Token을 갱신하는 데 사용 (긴 수명) |
Scope | 토큰이 접근할 수 있는 리소스 범위 지정 |
Authorization Code | 인증 → 토큰 발급을 위한 중간 코드 |
🌐 OAuth2 사용 사례
사용 예시 설명
소셜 로그인 | Google, Facebook 등의 계정으로 로그인 구현 |
외부 API 인증 | 토큰 기반으로 외부 API에 안전하게 접근 |
마이크로서비스 인증 | 서버 간 RESTful API 호출 시 인증 체계로 사용 |
🧠 정리 요약
항목 설명
OAuth2 목적 | 사용자 자격정보 노출 없이 안전한 데이터 접근 |
기본 흐름 | 로그인 → 권한 승인 → 토큰 발급 → API 요청 |
권장 방식 | Authorization Code 방식 (보안성 최고) |
주요 토큰 | Access Token, Refresh Token, Scope, Auth Code |
OAuth2는 단순한 인증 이상의 구조를 제공하며, API 보안과 사용자 경험을 동시에 확보할 수 있는 필수 기술입니다 🔐
'Django' 카테고리의 다른 글
Chapter 11-5 Django Mini Project - GitHub OAuth2 로그인 구현 (0) | 2025.05.16 |
---|---|
Chapter 11-4 Django에서 네이버 OAuth2 로그인 구현하기 (0) | 2025.05.16 |
Chapter 11-2 Django 인스타그램 프로젝트 - 검색 기능 구현 정리 (0) | 2025.05.16 |
Chapter 11-1 Django 인스타그램 프로젝트 - 팔로워 / 팔로잉 목록 모달 구현하기 (0) | 2025.05.16 |
Chapter 10-5 팔로우 모델과 사용자 친화적 출력 기능 (0) | 2025.05.15 |