저번 포스팅에서 OAuth에는 여러 가지 인증 방식이 있다고 알려드렸는데, 오늘은 가장 간단한 Client Credential 인증 방식의 플로우에 대해 알아보도록 하겠습니다. OAuth에 대한 여러가지 인증 방식은 이전 포스팅을 참고하세요.
2022.05.26 - [개발자] - 상황별 OAuth grant_type의 사용
Client Credentail 방식은 매우 간단한 프로세스입니다. 인증 서버에 Client ID와 Client Secret를 보내 토큰을 받고, API 헤더에 액세스 토큰을 붙여서 요청하는 방식이죠.
- 말씀드린 것과 같이 Client ID와 Client Secret을 POST 방식으로 인증 서버에 보냅니다. 일반적으로 엔드 포인트는 /oauth/token입니다. Client ID와 Secret은 개발자가 상대방의 API 사용 요청 시 받을 수 있는 것으로 사용 요청 후 일반적으로 대시보드에서 찾을 수 있습니다.
- 상대방 인증서버에서 Client ID와 Secret의 유효성을 체크합니다.
- ID와 Secret이 유효하면 (일반적으로 사용자명과 패스워드와 동일한 프로세스) 억세스 토큰을 전송합니다.
- API 엔드포인트의 Header에 Bearer ACCESS_TOKEN을 붙여 리소스를 요청합니다.
- 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 플로우에 대해 자세히 알아보도록 하겠습니다.
'개발 이야기' 카테고리의 다른 글
영어 어감을 확인하기 위한 구글 번역기 활용 (0) | 2022.06.10 |
---|---|
OAuth 2.0 - Authorization Code (0) | 2022.06.09 |
해외 취업 개발자 이력서 작성 방법 (0) | 2022.05.29 |
상황별 OAuth grant_type의 사용 (2) | 2022.05.26 |
OAuth 2.0 이해하기 (0) | 2022.05.23 |
최근댓글