使用 Edge OAuth2 服务获取令牌

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

您可以使用 Edge OAuth2 服务来用凭据换取访问令牌和刷新令牌,然后使用该令牌在 OAuth 工作流中调用 Edge 端点。

除了本部分中介绍的方法之外,您还可以使用 acurlget_token 实用程序获取 OAuth2 令牌。

路径

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

如果您要从适用于公有云的 Edge 中已启用 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 代码,然后将 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")。