OAuth / / 2024. 12. 18. 11:16

인가 코드 그랜트 타입과 클라이언트 크레덴셜 그랜트 타입

✅ 맞습니다! OAuth 2.0에서는 "인가 코드 그랜트 타입""클라이언트 크레덴셜 그랜트 타입"이 존재하지만, 동작 방식과 목적이 다릅니다.


1. 인가 코드 그랜트 타입 (Authorization Code Grant Type)

목적: 사용자가 개입하는 방식으로, 사용자 인증과 권한 부여를 위해 사용됩니다.

  • 사용 사례: 사용자 인증이 필요하고, 클라이언트가 사용자의 권한으로 API를 호출할 때 사용

동작 흐름

  1. 클라이언트가 사용자를 Authorization Server로 리다이렉트합니다.
  2. 사용자는 로그인 및 권한 부여를 수행합니다.
  3. Authorization Server인가 코드를 발급하고 클라이언트로 리다이렉트합니다.
  4. 클라이언트는 인가 코드를 받아 서버에 전달해 Access Token을 요청합니다.
  5. Authorization Server가 유효한 코드로 확인되면 Access Token을 발급합니다.

요청 예시

GET /authorize?response_type=code&
    client_id=YOUR_CLIENT_ID&
    redirect_uri=https://yourapp.com/callback&
    scope=read&
    state=random-string

특징

  • 사용자 개입이 필수
  • 보안 강화: Access Token이 직접 노출되지 않음 (인가 코드 교환을 통해 발급)
  • 웹 애플리케이션, 모바일 앱 등에서 주로 사용됨

2. 클라이언트 크레덴셜 그랜트 타입 (Client Credentials Grant Type)

목적: 사용자 개입 없이 클라이언트 애플리케이션이 자체적으로 인증할 때 사용됩니다.

  • 사용 사례: 서버 간의 통신, 백엔드 서비스가 자체 권한으로 API 호출

동작 흐름

  1. 클라이언트가 클라이언트 ID클라이언트 시크릿을 사용해 Authorization Server에 토큰 발급 요청을 보냅니다.
  2. Authorization Server는 클라이언트를 검증한 후 Access Token을 발급합니다.

요청 예시

POST /token HTTP/1.1
Host: authorization-server.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET

특징

  • 사용자 개입 없음
  • 클라이언트가 자체 권한으로 API를 호출 (사용자 정보 불필요)
  • 보안 주의: 클라이언트 시크릿이 노출되지 않도록 해야 함

주요 차이점 요약

특징 인가 코드 그랜트 클라이언트 크레덴셜 그랜트
사용자 개입 필요 (사용자 로그인 및 권한 부여) 불필요 (클라이언트 자체 인증)
용도 사용자 기반 애플리케이션 (웹, 모바일) 서버 간 통신, 백엔드 서비스 호출
보안 인가 코드를 통해 Access Token 발급 클라이언트 시크릿 기반으로 발급
Access Token 발급 주체 사용자 인증 후 발급 클라이언트가 자체적으로 요청

정리

  • 인가 코드 그랜트 타입: 사용자 인증이 필요할 때 사용. (웹, 모바일 앱에 주로 사용)
  • 클라이언트 크레덴셜 그랜트 타입: 사용자 개입 없이, 서버 간 통신에 사용.

'OAuth' 카테고리의 다른 글

OpenID Connect (OIDC)  (1) 2024.12.18
/.well-known/openid-configuration  (0) 2024.12.18
Client Credentials Grant Type  (0) 2024.12.18
OAuth 2.0 액세스 토큰 발급 방법  (0) 2024.12.17
Spring Authorization Server 구성  (0) 2024.12.17
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유