✅ Client Credentials Grant Type은 OAuth 2.0의 인증 방식 중 하나로, 클라이언트 애플리케이션이 자체적으로 인증하고 액세스 토큰을 발급받는 방식입니다.
이 방식은 사용자 개입 없이 클라이언트 자체가 인증 주체가 되는 경우에 사용됩니다.
1. 사용 사례
- 서버 간 통신: 사용자 정보가 필요 없는, 백엔드 서비스 간의 통신
- API 접근: 클라이언트가 자체 권한으로 API를 호출할 때
- 비즈니스 로직: 특정 작업을 수행하기 위한 클라이언트 자체 인증
예를 들어 마이크로서비스 환경에서 서비스 A가 서비스 B의 API를 호출할 때 사용자 대신 서비스 자체를 인증하는 경우 사용됩니다.
2. 흐름 (Flow)
다음은 Client Credentials Grant Type의 단계적 흐름입니다:
클라이언트 인증 요청
클라이언트 애플리케이션은 클라이언트 ID와 클라이언트 시크릿을 사용하여 인증 서버에 요청합니다.
요청 형식은 다음과 같습니다:
POST /token HTTP/1.1 Host: authorization-server.com Content-Type: application/x-www-form-urlencoded grant_type=client_credentials& client_id=CLIENT_ID& client_secret=CLIENT_SECRET
액세스 토큰 발급
- 인증 서버는 클라이언트를 검증한 후 액세스 토큰을 발급합니다:
{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600 }
- 인증 서버는 클라이언트를 검증한 후 액세스 토큰을 발급합니다:
API 접근
- 클라이언트는 발급받은 액세스 토큰을 사용하여 API 서버에 접근합니다:
GET /resource HTTP/1.1 Host: resource-server.com Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
- 클라이언트는 발급받은 액세스 토큰을 사용하여 API 서버에 접근합니다:
리소스 제공
- API 서버는 액세스 토큰을 검증한 후 요청된 리소스를 제공합니다.
3. 특징
- 사용자 인증 없음: 사용자가 개입하지 않고 클라이언트만 인증됩니다.
- 클라이언트 신뢰: 클라이언트는 반드시 인증 서버에 등록된 클라이언트 ID와 클라이언트 시크릿을 소유해야 합니다.
- 보안 주의: 클라이언트 시크릿이 노출되지 않도록 주의해야 합니다.
4. 언제 사용해야 할까?
- 서비스 간 비즈니스 로직 수행
예: 백엔드 서버가 데이터 처리 또는 다른 서비스와 통신할 때 - 보안이 필요한 서버 간 API 호출
예: 애플리케이션이 API 키 없이 안전하게 인증 서버와 통신할 때
5. 장단점
장점
- 사용자 인증이 필요 없으므로 간단하게 사용 가능
- 서버 간 통신에 적합
단점
- 클라이언트 시크릿이 노출되면 보안 위협 발생
- 사용자 정보 기반의 세밀한 권한 부여는 불가능
6. 요약
Client Credentials Grant Type은 사용자가 개입하지 않고, 클라이언트가 직접 인증 서버에 인증 요청을 보내 액세스 토큰을 발급받아 리소스에 접근하는 방식입니다.
✅ 서버 간 통신 또는 클라이언트가 자체 권한으로 API 호출할 때 주로 사용됩니다.
'OAuth' 카테고리의 다른 글
/.well-known/openid-configuration (0) | 2024.12.18 |
---|---|
인가 코드 그랜트 타입과 클라이언트 크레덴셜 그랜트 타입 (0) | 2024.12.18 |
OAuth 2.0 액세스 토큰 발급 방법 (0) | 2024.12.17 |
Spring Authorization Server 구성 (0) | 2024.12.17 |
Authorization Code (0) | 2024.12.17 |