블로그 썸네일

저번 포스팅에서 OAuth에는 여러 가지 인증 방식이 있다고 알려드렸는데, 오늘은 가장 간단한 Client Credential 인증 방식의 플로우에 대해 알아보도록 하겠습니다. OAuth에 대한 여러가지 인증 방식은 이전 포스팅을 참고하세요.

2022.05.26 - [개발자] - 상황별 OAuth grant_type의 사용

 

상황별 OAuth grant_type의 사용

저번 포스팅에서 OAuth에서는 다양한 인증 플로우가 있다는 것을 이야기 하였는데요, 이번에는 어떤 플로우를 사용해야하는지에 대해 알아보도록 하겠습니다. OAuth가 왜 이해하기 어려운지와 다

jedidev.tistory.com

Client Credentail 방식은 매우 간단한 프로세스입니다. 인증 서버에 Client ID와 Client Secret를 보내 토큰을 받고, API 헤더에 액세스 토큰을 붙여서 요청하는 방식이죠.

Client Credential Flow

  1. 말씀드린 것과 같이 Client ID와 Client Secret을 POST 방식으로 인증 서버에 보냅니다. 일반적으로 엔드 포인트는 /oauth/token입니다. Client ID와 Secret은 개발자가 상대방의 API 사용 요청 시 받을 수 있는 것으로 사용 요청 후 일반적으로 대시보드에서 찾을 수 있습니다.
  2. 상대방 인증서버에서 Client ID와 Secret의 유효성을 체크합니다.
  3. ID와 Secret이 유효하면 (일반적으로 사용자명과 패스워드와 동일한 프로세스) 억세스 토큰을 전송합니다.
  4. API 엔드포인트의 Header에 Bearer ACCESS_TOKEN을 붙여 리소스를 요청합니다.
  5. API 엔드포인트에서 리소스를 전송합니다.

CURL을 이용해 억세스 토큰을 받는 수도 코드는 아래와 같습니다.

curl --request POST \
  --url 'https://YOUR_DOMAIN/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials \
  --data client_id=YOUR_CLIENT_ID \
  --data client_secret=YOUR_CLIENT_SECRET

정상적으로 인증이 되면, 보통 아래와 같이 토큰을 발급해 줍니다.

{
  "access_token":"eyJz93a...k4laUWw",
  "token_type":"Bearer",
  "expires_in":86400
}

그러면, 이 억세스 토큰으로 API에 리소스를 요청하게 되죠. expires_in과 같이 토큰 유효 시간도 같이 알려주는데, 이 경우 하루 동안 유효한 토큰이 되겠네요. API에 리소스를 요청하는 CURL은 다음과 같습니다.

curl --request GET \
  --url https://myapi.com/api \
  --header 'authorization: Bearer ACCESS_TOKEN' \
  --header 'content-type: application/json'

오늘은 Client Credential 타입의 인증 플로우를 자세히 알아보았는데, 다음에는 Authorization Code 플로우에 대해 자세히 알아보도록 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기