🔐 OAuth 2.0, 소셜 로그인의 원리
우리가 자주 쓰는 구글 로그인, 카카오 로그인, 네이버 로그인 같은 기능은
모두 OAuth 2.0 프로토콜을 기반으로 합니다.
그렇다면 OAuth 2.0은 무엇이고, 어떤 흐름으로 동작할까요?
1️⃣ OAuth 2.0이란?
사용자가 자신의 계정 정보(ID/비밀번호)를 직접 제공하지 않고,
제3자 서비스가 안전하게 자원에 접근할 수 있도록 권한을 위임하는 프로토콜
즉, 비밀번호를 공유하지 않고도
"이 앱이 내 구글 캘린더에 접근하는 걸 허용할게" 같은 동작이 가능해집니다.
2️⃣ 주요 개념
- Resource Owner : 사용자
- Client : 사용자 대신 API에 접근하려는 앱/서비스
- Authorization Server : 인증과 권한 부여 담당 (예: 구글/카카오 서버)
- Resource Server : 보호된 자원이 있는 서버 (예: 구글 드라이브 API)
3️⃣ 동작 흐름 (Authorization Code Grant)
- 사용자가 "구글 로그인" 버튼 클릭
- Authorization Server(구글)로 리다이렉트
- 사용자가 동의 → Authorization Code 발급
- Client(앱)가 Authorization Code와 함께 토큰 요청
- Access Token 발급 → API 요청 시 사용
4️⃣ Access Token과 Refresh Token
- Access Token : 단기적으로 API 접근 허용
- Refresh Token : Access Token 만료 시 재발급용
OAuth 2.0에서는 보통 JWT 형태의 토큰을 사용합니다.
5️⃣ 장점
- 비밀번호를 직접 노출하지 않아도 됨
- 다양한 서비스 간 연동에 유리
- 세분화된 권한 제어 가능 (예: 캘린더는 읽기만 허용)
6️⃣ 단점 및 보안 이슈
- Access Token 탈취 시 위험
- Redirect URL 취약점 존재 가능
- 안전한 토큰 보관 및 HTTPS 사용 필수
🧠 정리
- OAuth 2.0은 권한 위임 프로토콜
- 소셜 로그인, API 연동 등 현대 웹 서비스에서 핵심
- JWT와 함께 쓰여서 인증·인가를 안전하게 처리
