1. 개요
- 외부 애플리케이션이 사용자 정보를 안전하게 접근할 수 있도록 허용하는 인증 및 권한 부여 프레임워크.
- 목적: 사용자의 자격 증명을 외부 애플리케이션에 직접 제공하지 않고, 안전하게 자원에 접근할 수 있도록 하는 것.
2. 주요 용어
- 클라이언트 (Client): 인증을 요청하는 애플리케이션 (예: 웹 앱, 모바일 앱).
- 리소스 서버 (Resource Server): 보호된 자원을 제공하는 서버 (예: Google API, Facebook API).
- 인증 서버 (Authorization Server): 인증을 처리하고, 액세스 토큰을 발급하는 서버.
- 사용자 (Resource Owner): 인증을 허용하고, 자원에 접근할 권한을 부여하는 사용자.
3. OAuth 2.0 흐름
- 사용자 인증 요청
- 클라이언트가 인증 서버에 인증 요청을 보냄.
- 사용자 동의 및 승인
- 사용자는 인증 서버에서 애플리케이션에 대한 접근을 승인.
- 인증 서버에서 액세스 토큰 발급
- 인증 서버가 승인된 클라이언트에 액세스 토큰을 발급.
- 리소스 서버에 액세스 토큰 전달
- 클라이언트는 액세스 토큰을 리소스 서버에 전달하여 보호된 자원에 접근.

4. OAuth 2.0의 Grant Type
- Authorization Code Grant: 주로 웹 애플리케이션에서 사용.
- Implicit Grant: JavaScript 클라이언트 또는 모바일 앱에서 사용 (보안상 위험).
- Resource Owner Password Credentials Grant: 사용자 이름과 비밀번호를 사용하여 토큰을 직접 요청.
- Client Credentials Grant: 서버 간 인증에 사용, 사용자 정보와 관계 없음.
5. OAuth 2.0의 장점
- 안전성: 사용자의 비밀번호를 외부 애플리케이션과 공유하지 않음.
- 유연성: 다양한 종류의 클라이언트와 리소스 서버에서 사용 가능.
- 접근 제어: 사용자가 어떤 자원에 접근할 수 있는지 세밀하게 제어 가능.
6. 액세스 토큰
- 액세스 토큰: 리소스 서버에 접근할 수 있는 권한을 부여하는 키.
- 유효 기간: 일정 시간이 지나면 만료되며, 리프레시 토큰을 통해 갱신 가능.
7. 리프레시 토큰
- 리프레시 토큰: 만료된 액세스 토큰을 갱신하는 데 사용되는 토큰.
8. 예시
- 카카오 로그인: 사용자가 카카오 계정으로 로그인하여, 다른 애플리케이션에 카카오 API를 통해 자신의 데이터를 제공할 수 있게 됨.
Share article