OAuth 2.0 (Open Authorization 2.0)¶
OAuth 2.0은 리소스 소유자(사용자)가 클라이언트(애플리케이션)에게 자신의 리소스에 접근할 수 있는 권한을 위임하는 개방형 표준 프로토콜입니다.
📌 주요 역할 (Roles)¶
- Resource Owner (리소스 소유자)
- 보호된 자원의 소유자이며, 클라이언트에게 접근 권한을 부여하는 사용자입니다.
- Client (클라이언트)
- 사용자를 대신하여 보호된 자원에 접근하려는 애플리케이션입니다.
- Authorization Server (권한 서버)
- 사용자의 신원을 인증하고, 권한이 확인되면 Access Token을 발급하는 서버입니다. (예: Google, Kakao, Keycloak 등)
- Resource Server (리소스 서버)
- Access Token을 검증하고, 유효한 요청에 대해 보호된 자원을 제공하는 서버입니다.
🔄 주요 권한 부여 방식 (Grant Types)¶
- Authorization Code Grant (권한 코드 방식)
- 가장 널리 사용되는 방식입니다.
- 사용자가 권한 서버에서 로그인 후,
Authorization Code를 받아 클라이언트에게 전달하고, 클라이언트는 이 코드로 다시Access Token을 요청합니다. - 토큰이 사용자 브라우저에 직접 노출되지 않아 보안성이 높습니다.
- Implicit Grant (암시적 승인 방식)
- SPA(Single Page Application)와 같이 백엔드 서버가 없는 환경에서 주로 사용되었습니다. (현재는 PKCE를 적용한 Authorization Code 방식을 권장합니다.)
- Resource Owner Password Credentials Grant
- 사용자의 ID/Password를 직접 받아 토큰을 발급받습니다. 클라이언트를 전적으로 신뢰할 수 있는 경우에만 사용합니다.
- Client Credentials Grant
- 사용자 개입 없이, 클라이언트 자신이 리소스에 접근할 때 사용합니다. (서버 간 통신 등)
🔑 토큰 (Tokens)¶
- Access Token: 리소스 서버에 접근하기 위한 열쇠입니다. 유효 기간이 짧습니다.
- Refresh Token: Access Token이 만료되었을 때, 새로운 Access Token을 발급받기 위해 사용합니다. 유효 기간이 깁니다.