OAuth2
🔐 OAuth2란?
정의
OAuth2는 사용자 비밀번호를 직접 공유하지 않고도, 외부 애플리케이션이 제한된 범위의 권한을 위임받을 수 있게 해주는 인증/인가 표준이다. 주로 소셜 로그인, API 접근 위임, 외부 서비스 연동에서 사용한다.
🎯 사용하는 이유
- 사용자 비밀번호를 클라이언트에 직접 넘기지 않는다.
- 서비스 간 권한 위임을 안전하게 처리할 수 있다.
- 접근 범위를
scope로 세밀하게 제한할 수 있다. - 외부 앱이 사용자를 대신해 API를 호출할 수 있다.
포인트
OAuth2는 로그인 자체가 아니라 권한 위임에 더 가깝다.
🧱 주요 구성 요소
- Resource Owner: 자원의 소유자, 보통 사용자
- Client: 권한을 요청하는 애플리케이션
- Authorization Server: 토큰을 발급하는 서버
- Resource Server: 보호된 자원을 제공하는 서버
🔄 기본 흐름
- 사용자가 Client를 통해 권한 요청을 시작한다.
- Authorization Server가 사용자 인증과 동의를 받는다.
- Authorization Server가 Access Token을 발급한다.
- Client가 Access Token을 이용해 Resource Server에 요청한다.
- Resource Server가 토큰을 검증하고 자원을 제공한다.
🧩 주요 개념
Access Token
- API 접근에 사용한다.
- 비교적 짧은 유효 시간을 가진다.
Refresh Token
- Access Token 재발급에 사용한다.
- 보통 더 긴 유효 시간을 가진다.
Scope
- 토큰이 접근할 수 있는 권한 범위다.
- 필요한 권한만 부여하는 데 중요하다.
Redirect URI
- 인증 완료 후 돌아갈 주소다.
- 미리 등록된 URI만 허용해야 한다.
🛠️ 대표적인 인증 방식
- Authorization Code
- Client Credentials
- Refresh Token
- Device Code
[!important] 주의 OAuth2 방식마다 적용 대상이 다르다. 사용자 로그인용인지, 서버 간 통신용인지 먼저 구분해야 한다.
⚠️ 주의할 점
- OAuth2는 인증과 인가가 섞여 보일 수 있지만 본질은 권한 위임이다.
- Access Token의 만료 시간과 Refresh Token 정책을 분리해서 설계해야 한다.
- Scope를 너무 넓게 주면 보안 사고로 이어질 수 있다.
- Redirect URI 검증을 엄격하게 해야 한다.
🔗 JWT와의 관계
- OAuth2는 권한 위임 흐름을 정의한다.
- JWT는 토큰의 표현 형식으로 자주 사용된다.
- 즉, OAuth2와 JWT는 자주 함께 쓰이지만 같은 개념은 아니다.
✅ 활용 예시
- 소셜 로그인
- 외부 API 연동
- 마이크로서비스 권한 위임
- 모바일 앱 인증 흐름
🧾 정리
OAuth2는 안전하게 권한을 위임하는 표준이다. 비밀번호를 직접 공유하지 않고, 토큰과 범위를 통해 필요한 권한만 주는 것이 핵심이다.
댓글남기기