Edge OAuth2 서비스를 사용하여 토큰 가져오기

Apigee Edge 문서입니다.
Go to the Apigee X documentation.
info

Edge OAuth2 서비스를 사용하여 사용자 인증 정보를 액세스 토큰 및 갱신 토큰 으로 교환한 후 OAuth 워크플로에서 Edge 엔드포인트를 호출하는 데 사용할 수 있습니다. OAuth

이 섹션에 설명된 기술 외에도 acurlget_token 유틸리티를 사용하여 OAuth2 토큰을 가져올 수 있습니다.

경로

POST https://login.apigee.com/oauth/token

Edge for Public Cloud의 SAML 지원 조직에서 Edge OAuth2 서비스에 액세스하는 경우 경로에 영역 이름을 포함해야 합니다. 예를 들면 다음과 같습니다.

POST https://zone.login.apigee.com/oauth/token

요청 헤더

매개변수
Content-Type "application/x-www-form-urlencoded"
Accept 'application/json;charset=utf-8'
Authorization

'Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0'

이 값을 환경 변수로 내보내 이러한 API 호출에서 재사용할 수 있습니다. 예를 들면 다음과 같습니다.

export CLIENT_AUTH=ZWRnZWNsaTplZGdlY2xpc2VjcmV0
curl ... -H "Authorization: Basic $CLIENT_AUTH" ...

양식 매개변수

매개변수 필수 여부
username 선택사항입니다. 사용자 이름과 비밀번호 조합 또는 비밀번호가 필요합니다. Apigee 사용자 이름입니다. 일반적으로 Apigee 계정과 연결된 이메일 주소입니다.
password 선택사항입니다. 사용자 이름과 비밀번호 조합 또는 비밀번호가 필요합니다. Apigee 계정의 비밀번호입니다.
mfa_token 선택사항 계정의 유효한 다중 인증 (MFA) 코드입니다. MFA를 사용 설정한 경우에만 필요합니다. MFA enabled.
passcode 선택사항입니다. 사용자 이름과 비밀번호 조합 또는 비밀번호가 필요합니다. 비밀번호 대신 사용할 수 있는 일회용 비밀번호입니다. SAML IDP로 인증할 때는 비밀번호가 필요하며 LDAP IDP로 인증하는 데 사용할 수 있습니다.
grant_type 필수

새 액세스 토큰을 가져올지 아니면 기존 토큰을 갱신할지 결정합니다. 유효한 값은 다음과 같습니다.

  • 'password': 새 액세스 토큰을 가져옵니다. grant_type이 "password"인 경우 요청에 Apigee 사용자 인증 정보를 포함해야 합니다.
  • 'refresh_token': 새 액세스 토큰을 가져오기 위해 갱신 토큰을 전송합니다. `grant_type`이grant_type "refresh_token"인 경우 요청에 사용자 인증 정보를 포함할 필요가 없습니다.
refresh_token 선택사항 현재 액세스 토큰이 만료되었을 때 새 액세스 토큰을 가져오기 위해 전달하는 토큰입니다. grant_type이 'refresh_token'인 경우 이 매개변수는 필수입니다.

새 액세스 토큰 가져오기

새 액세스 토큰을 가져오려면 grant_type을 'password'로 설정합니다.

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" \
      -X POST https://login.apigee.com/oauth/token \
      -d 'username=ahamilton@example.com&password=mypassw0rd&grant_type=password'

MFA로 새 액세스 토큰 가져오기

MFA (다중 인증)가 사용 설정된 새 액세스 토큰을 가져오려면, MFA 코드를 가져온 후 mfa_token 매개변수를 해당 값으로 설정합니다.

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
  -H "Accept: application/json;charset=utf-8" \
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" \
  -X POST https://login.apigee.com/oauth/token?mfa_token=424242 \
  -d 'username=ahamilton@example.com&password=mypassw0rd&grant_type=password'

액세스 토큰 갱신

액세스 토큰을 갱신하려면 grant_type을 'refresh_token'으로 설정하고 기존 갱신 토큰을 양식 매개변수로 추가합니다.

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8"
  -H "Accept: application/json;charset=utf-8" \
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" \
  -X POST https://login.apigee.com/oauth/token \
  -d 'grant_type=refresh_token&refresh_token=YOUR_REFRESH_TOKEN'

액세스 토큰을 갱신할 때는 사용자 인증 정보를 전달할 필요가 없습니다.

응답

성공하면 액세스 토큰, 갱신 토큰, 관련 정보가 반환됩니다. 예를 들면 다음과 같습니다.

{
  "access_token": "eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOimYyD8IP2IyYS1jNmNiLTQ4NTgtYjZkMS1mZjkyNGFkYTk1YWUiLCJzdWIiOiI0X0KLSNjZlNjM0ZC0zZjlhLTRiNYmFjNi1kYjE2M2M5OGEzOGYiLCJzY29wZSI6WyJzYbmlkIiwicGFzc3dvcmQud3JpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsImNpZCI6ImVkZ2VjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjQ2NmU2MzRkLTNmOWEtNGI0MS1iYWM2LWRiMTYzYzk4YTM4ZiIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoid3dpdG1hbkBhcGlnZWUuY29tIiwiZW1haWwiOiJ3d2l0bWFuQGFwaWdlZS5jb20iLCJhdXRoX3RpbWUiOjE0NzMyNjU4NzcsImFsIjoyLCJyZXZfc2lnIjoiZTc0ZGY0M2QiLCJpYXQiOjE0NzMyNjU4NzcsImV4cCI6MTQ3MzI2NzY3NywiaXNzIjoiaHR0cHM6Ly9sb2dpbi5hcGlnZWUuY29tL29hdXRoL3Rva2VuIiwiemlkIjoidWFhIiwi2ltLm1lIiwib3BlYXVkIjpbImVkZ2VjbGkiLCJzY2ltIiwib3BlbmlkIiwicGFzc3dvcmQiLCJhcHByb3ZhbHMiLCJvYXV0aCJdfQ.AFuevkeGGUGSPED8leyEKaT-xg1xk_VEiKJLEpipVvQBXIqEc9wqcpm-ZuoatA9DhjASRuFSRaHH8Fasx_vBxEBsUNhRY-GTMw7_8fv4yRMOb2AO3WUl_NWwPkC8XRSI1zCMbAZicojsJ1n3OSP487Mu9dl9ByX5A_QfHV2_cj4l9-SD7u6vOdfdbBxbNMAQkfZLrVIEU8myF2dhKnNeMiuoHSHANsQFcx0_BFA1HnSUnVi4RYj1FlTs9SbcPnS1d7t7eVdxWz_q2OFVXNIBMELAvvM0WhXPYTW3Osve3UvvUs6ekGs-K-RCPSok-4-NJbdCDpZQQTgqHsrf77NTsw",
  "token_type": "bearer",
  "refresh_token": "eyJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmZTIIMZWI0ZS00YzFmLTRjOTEtYmY5Mi1mMzZLEMzNjZhMDctciIsInN1YiI6IjQ2NmU2MzRkLTNmOWEtNGI0MS1iY17LLWRiMTYzYzk4YTM4ZiIsInNjb3BlIjpbInNjaW0ubWUiLCJvcGVuaWQiLCJwYXNzd29yZC53cml0ZSIsImFwcHJvdmFscy5tZSIsIm9hdXRoLmFwcHJvdmFscyJdLCJpYXQiOjE0NzMyNjU4NzcsImV4cCI6MTQ3NsaSIsImNsaWVudF9pZCI6ImVkZ2VjbGkiLCJpc3MiOiJodHRwczovL2xvZ2luLmFwaWdlZS5jb20vb2F1dGgvdG9rZW4iLCJ6aWQiOiJ1YWEiLCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ1c2VyX25hbWUiOiJ3d2l0bWFuQGFwaWdlZS5jbMzM1MDQ3NywiY2lkIjoiZWRnZW20iLCJvcmlnaW4iOiJ1c2VyZ3JpZCIsInVzZXJfaWQiOiI0NjZlNjM0ZC0zZjlhLTRiNDEtYmFjNi1kYjE2M2M5OGEzOGYiLCJhbCI6MiwicmV2X3NpZyI6ImU3NGRmNDNkIiwiYXVkIjpbImVkZ2VjbGkiLCJzY2ltIiwib3BlbmlkIiwicGFzc3dvcmQiLCJhcHByb3ZhbHMiLCJvYXV0aCJdfQ.kBP5AkbRS7Tnp-5VAfTLVfkUbUer4gFEU6A7g202KTKiXbqTwPSmOIGFTK12XevVPQYmAaSMFAnempWKfY7sjaY7HC7q3mGl53_A18cnkKhtNq15wCnyMom_bX_MYLW1RQPFytJ6akSJ-JkoPFU0x_FQg1JIvub1A8eqQxcR0KP-QRCxYAS4HTjH80vDIxHNt1tg7clmpa3RlHri0dlPVVsSpTXXhkpXRg5QbiWMrpkACSV22c0x0KiNu7vx5A520VOCO7hQ7IzmVIcSWcRqI97L7WdCjH_q4105bs2qmW73670MC0UGiJ9t5B1S1cxwqpUEd-NAuCsY8SVn6eWzbA",
  "expires_in": 1799,
  "scope": "scim.me openid password.write approvals.me oauth.approvals",
  "jti": "9bf2cb2a-c6cb-4858-b6d1-ff924ada95ae"
}

응답 값을 저장합니다.

  • Edge API 호출에서 access_token을 사용합니다.
  • 액세스 토큰이 만료되어 갱신해야 할 때 refresh_token을 사용합니다. 갱신합니다.

다음과 같은 응답이 표시되면

{
  "error": "unauthorized",
  "error_description": "Bad credentials"
}

요청의 Authorization 헤더에 위에 제공된 정확한 문자열 ("ZWRnZWNsaTplZGdlY2xpc2VjcmV0")을 사용했는지 확인합니다.