📌 OAuth 2.0이란?
info
OAuth 2.0은 제3자 애플리케이션이 사용자의 비밀번호를 알지 않고도 자원에 접근할 수 있도록 권한을 위임하는 인증 프로토콜이다.
인증(Authentication)보다는 인가(Authorization)에 초점을 둔 방식이며, 대표적인 토큰 기반 인가 프레임워크이다.
✅ 등장 배경
- SNS, 이메일, 클라우드 등 외부 서비스와 연동 필요 증가
- 사용자 비밀번호를 직접 공유하지 않고 인증 위임을 수행하기 위함
✅ 주요 개념
용어 |
설명 |
Resource Owner |
자원 소유자 (ex. 사용자) |
Client |
외부 애플리케이션 (ex. 앱, 웹) |
Authorization Server |
인증을 수행하고 토큰 발급 |
Resource Server |
보호된 자원(API 등)을 제공하는 서버 |
Access Token |
자원 접근 권한을 가진 토큰 |
Refresh Token |
Access Token 갱신에 사용되는 토큰 |
✅ OAuth 2.0 동작 흐름
- 사용자 → 클라이언트 로그인 요청
- 클라이언트 → 인증서버에 권한 요청 (인가 코드 받음)
- 클라이언트 → 인가 코드를 이용해 액세스 토큰 요청
- 인증 서버 → 액세스 토큰 발급
- 클라이언트 → 리소스 서버에 토큰 포함 요청
- 리소스 서버 → 토큰 검증 후 데이터 응답
✅ 인가 방식 (Grant Types)
방식 |
설명 |
Authorization Code |
가장 일반적, 서버-서버 환경에 적합 |
Implicit |
클라이언트에서 토큰 직접 발급 (보안 취약) |
Resource Owner Password |
ID/PW 직접 입력 방식 (권장되지 않음) |
Client Credentials |
클라이언트가 자체적으로 인증 (서버 간 통신) |
✅ OAuth2 vs JWT
항목 |
OAuth2 |
JWT |
개념 |
인증/인가 프로토콜 |
토큰 형식 |
목적 |
권한 위임 |
사용자 정보 전달 |
동작 방식 |
인증 서버 + 토큰 발급 |
토큰 자체에 정보 내포 |
사용 예시 |
구글 로그인, 카카오 로그인 |
사용자 상태 유지, API 인증 |
✅ OAuth2 적용 예시 (Spring Security)
spring:
security:
oauth2:
client:
registration:
google:
client-id: xxxx
client-secret: xxxx
scope: profile, email
✅ OAuth2 사용 사례
- 소셜 로그인 (구글, 네이버, 카카오 등)
- 외부 애플리케이션과의 연동 API
- 사내 SSO 구현
연결문서
댓글남기기