Spring/Oauth2

Oauth2 Client Credentials Grant

hwanguu 2025. 1. 12. 22:30

개요

 

  • 1. 흐름 및 특징
    • 애플리케이션이 리소스 소유자인 동시에 클라이언트의 역할을 한다
    • 리소스 소유자에게 권한 위임 받아 리소스에 접근하는 것이 아니라 자기 자신이 애플리케이션을 사용할 목적으로 사용하는 것
    • 서버 대 서버간의 통신에서 사용할 수 있으며 IOT 와 같은 장비 어플리케이션과의 통신을 위한 인증으로도 사용할 수 있다.
    • Client Id 와 Client Secret 을 통해 액세스 토큰을 바로 발급 받을 수 있기 때문에 Refresh Token 을 제공하지 않는다
    • Client 정보를 기반으로 하기 때문에 사용자 정보를 제공하지 않는다.
  • 2. 권한 부여 승인 요청 시 매개변수
    • grant_type=client_credentials (필수)
    • client_id (필수)
    • client_secret (필수)
    • scope (선택사항)

 

흐름

 

 

 

실습

기본세팅 : https://hwanguu.tistory.com/71

 

Oauth2 Keycloak Docker compose, 기본세팅

version: '3.9'services: postgres: image: postgres:latest container_name: postgres restart: always environment: POSTGRES_USER: keycloak POSTGRES_PASSWORD: keycloak POSTGRES_DB: keycloak ports: - "5432:5432" keycloak: image: quay.io/keycloak/keycloak:19.0.1

hwanguu.tistory.com

 

 

1. 인증 서버 API 호출

 

2. return 값 확인

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqOXYyeTNJN0RzTy02aFhqanFGUi1YSURWd2RvWUwyemRfVjN3c05EREFZIn0.eyJleHAiOjE3MzY2ODg4OTYsImlhdCI6MTczNjY4ODU5NiwianRpIjoiMzYwNmY5ZWMtZjI1ZS00Y2QxLWJhZmMtODc1MWYyMWI4OGUwIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3JlYWxtcy9vYXV0aDIiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiZjgyMjMyNWEtN2YzZS00Y2U0LThkZGItNDg5ZTkyZDA1MjU5IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoib2F1dGgyLWNsaWVudC1hcHAiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJkZWZhdWx0LXJvbGVzLW9hdXRoMiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7Im9hdXRoMi1jbGllbnQtYXBwIjp7InJvbGVzIjpbInVtYV9wcm90ZWN0aW9uIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImNsaWVudEhvc3QiOiIxNzIuMjAuMC4xIiwiY2xpZW50SWQiOiJvYXV0aDItY2xpZW50LWFwcCIsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1vYXV0aDItY2xpZW50LWFwcCIsImNsaWVudEFkZHJlc3MiOiIxNzIuMjAuMC4xIn0.RYnPt8QPMLX1cjFeHzXkXLH0ZYYBrSt4DaWluTPfZCagafhYAkP_kTTcAjgfc5lDHRjm6jt0GsHZHr0K_z7jN3r4_uvwoLnCSAFvp5dLbXuZAGMcG3wa8nURBElM-_b99Fx-YWYwcE4nMEzrcN-SIkxArz4BPW71qjTlihbNyzCsgoNKVLsjX6yTkCRDmsU-BHfWroSLaCGT5UE3vPsnNHrUOCIy7bOooG-KB71l4NHSV_wvI6oBeW-rbENtIMc8kLlk15VU2QFS5iA9fbSh8be-ckfL2u6gesaJ4W-TBDle7ydMSH3nuplUT065oTMnJbTBN1gT50VZpZqaZfpKYw",
    "expires_in": 300,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": "email profile"
}

 

 

References 및 사진 출처

정수원 스프링 시큐리티 OAuth2

'Spring > Oauth2' 카테고리의 다른 글

Oauth2 PKCE-enhanced Authorization Code Grant  (0) 2025.01.12
Oauth2 Refresh Token Grant  (0) 2025.01.12
Oauth2 Password Grant  (0) 2025.01.12
Oauth2 Implicit Grant  (0) 2025.01.12
Oauth2 Keycloak Docker compose, 기본세팅  (0) 2025.01.12