使用 Edge OAuth2 服務取得權杖

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

您可以使用 Edge OAuth2 服務交換憑證,以獲得存取權並更新權杖,接著在 OAuth 工作流程中呼叫 Edge 端點。

除了本節所述的技巧之外,您也可以使用 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 時才需要。
passcode 選填。並必須輸入使用者名稱和密碼組合或密碼。 動態密碼,可用於取代密碼。使用 SAML IDP 進行驗證時,必須輸入密碼,並可用於透過 LDAP IDP 進行驗證。
grant_type 必要

決定要取得新的存取權杖還是更新現有權杖。有效的值包括:

  • "password":取得新的存取權杖。如果 grant_type 為「password」,您必須在要求中加入 Apigee 憑證。
  • "refresh_token":傳送更新權杖以取得新的存取權杖。如果 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_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」)。