내부 애플리케이션을 테스트하거나 구축하는 경우 사용자 이름과 비밀번호가 필요한 기본 인증 또는 여전히 사용자 이름이 필요한 API 토큰 인증의 경우와 마찬가지로 API 요청이 특정 사용자와 연결되는 것을 원하지 않을 수 있습니다. 세 번째 옵션은 OAuth 액세스 토큰을 사용하는 것입니다.
언뜻 보기에 OAuth 토큰을 만드는 일이 복잡한 권한 부여 플로우로 인해 어려운 작업처럼 보일 수 있습니다. 하지만 프로세스의 가장 복잡한 부분을 건너뛰고 API에서 직접 액세스 토큰을 받을 수 있습니다. 이 문서에서는 몇 가지 간단한 단계를 거쳐 테스트 목적으로 고유한 OAuth 토큰을 만드는 방법을 설명합니다.
OAuth 클라이언트 만들기
첫 번째 단계는 테스트용 OAuth 클라이언트를 만드는 것입니다.
- 관리 센터의 사이드바에서 앱 및 연동 서비스 아이콘()을 클릭한 다음 API > Zendesk API를 선택합니다.
- OAuth 클라이언트 탭에서 목록 오른쪽 위에 있는 OAuth 클라이언트 추가를 클릭합니다.
테스트 목적으로 클라이언트를 설정하는 것은 일반 OAuth 클라이언트를 만드는 것과 약간 다릅니다. 다음 차이점을 참고하세요.
- 리디렉션은 유효한 HTTPS URL이어야 하지만 이 프로젝트를 위한 실제 웹사이트일 필요는 없습니다. 예: https://somesite.com.
- 고유 식별자는 코드에서 사용할 클라이언트의 이름입니다. OAuth 클라이언트 API의 클라이언트 나열 엔드포인트로 클라이언트 ID를 가져올 수도 있습니다.
- 나중에 참조할 수 있도록 비밀키를 복사할 수 있습니다. 만든 후에는 다시 표시되지 않지만 OAuth 웹 앱을 구축하거나 다른 프로젝트에 사용하려는 경우 이렇게 하기 원할 것입니다.
- 다른 모든 필드는 더미 데이터로 채워질 수 있습니다.
액세스 토큰 만들기
이제 OAuth 토큰 API로 토큰을 만드는 데 필요한 모든 것이 준비되었습니다. 다음은 cURL로 요청하는 방법입니다.
curl https://{subdomain}.zendesk.com/api/v2/oauth/tokens.json \
-H "Content-Type: application/json" \
-d '{"token": {"client_id": "your_client_id", "scopes": ["read", "write"]}}' \
-X POST -v -u {email_address}:{password}
이 코드에서 주목할 몇 가지 사항은 다음과 같습니다.
- 하위 도메인 자리 표시자를 실제 하위 도메인으로 바꿔야 합니다.
- "client_id"의 값은 OAuth 클라이언트 페이지에서 복사한 번호입니다.
- 특별히 리소스에 대한 읽기 전용 액세스를 테스트하는 것이 아닌 한 범위를 ["read", "write"]로 설정하세요.
- 조직에서 통합 인증(SSO)을 사용하고 Zendesk 계정에서 Zendesk 비밀번호를 삭제한 경우에는 다음과 같이 API 토큰을 사용하여 요청을 인증해야 합니다.
-u {email_address}/token:{api_token}
. Support API 문서에서 API 토큰을 참조하세요.
cURL 요청을 실행합니다. 여러 가지 특성의 토큰 개체로 구성된 JSON 패키지를 리턴해야 합니다.
"full_token"의 값이 액세스 토큰입니다. 복사해서 안전하게 보관하세요!
응답의 "expires_at" 특성이 "null"입니다. 즉, 클라이언트 자체를 삭제할 때까지는 토큰 작동이 중지되지 않습니다. 다음에 관리 센터에서 OAuth 클라이언트 목록을 방문할 때에는 새 클라이언트에 대한 활성 토큰 수가 1만큼 증가됩니다.
새로운 액세스 토큰 사용하기
아무 데도 사용할 곳이 없다면 액세스 토큰이 무슨 소용이 있습니까? 아래 예 중 어느 것도 사용자 이름이나 비밀번호를 사용하지 않습니다. 그렇게 디자인되었기 때문이죠! OAuth 액세스 토큰은 사용자 계정에 의존하지 않으므로 앱과 스크립트에서 사용할 때의 이점 중 하나입니다.
액세스 토큰을 사용하여 API 요청 인증하기
인증이 필요한 모든 API 호출은 OAuth 액세스 토큰으로 실행될 수 있습니다. 예를 들어 티켓 엔드포인트에 대한 호출은 일반적으로 다음과 같습니다.
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-u {email_address}:{password}
액세스 토큰을 사용하면 다음과 같이 표시됩니다.
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-H "Authorization: Bearer {access_token}"
API 클라이언트에서 액세스 토큰 사용하기
어떤 API 클라이언트에서든 OAuth 액세스 토큰을 사용할 수도 있습니다. 예를 들어 Ruby 클라이언트는 일반적으로 다음과 같이 사용자 이름과 비밀번호(또는 API 토큰)를 사용한 인증이 필요합니다.
config.username = "user email" config.password = "user password"
대신 액세스 토큰을 사용하면 다음과 같이 표시됩니다.
config.access_token = "your OAuth access token"