การใช้บริการ Edge OAuth2 เพื่อรับโทเค็น

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

คุณจะใช้บริการ Edge OAuth2 เพื่อแลกเปลี่ยนข้อมูลเข้าสู่ระบบสำหรับโทเค็นเพื่อการเข้าถึงและรีเฟรชได้ ที่คุณใช้เพื่อเรียกอุปกรณ์ปลายทาง Edge ในบัญชี เวิร์กโฟลว์ OAuth

นอกจากเทคนิคที่อธิบายในส่วนนี้ คุณสามารถใช้ acurl และ ยูทิลิตี get_token เพื่อรับโทเค็น OAuth2

เส้นทาง

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

หากคุณเข้าถึงบริการ Edge OAuth2 จากองค์กรที่เปิดใช้ SAML ใน Edge for Public Cloud คุณจะทำสิ่งต่อไปนี้ได้ ต้องใส่ชื่อโซนในเส้นทางของคุณด้วย เช่น

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

ส่วนหัวของคำขอ

พารามิเตอร์ ค่า
Content-Type "application/x-www-form-urlencoded"
Accept "application/json;charset=utf-8"
Authorization

"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 คือ "รหัสผ่าน" คุณต้องระบุข้อมูลเข้าสู่ระบบ 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"
}

บันทึกค่าการตอบกลับ:

  • ใช้ access_token ในการเรียก Edge API
  • ใช้ refresh_token เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุและคุณต้อง รีเฟรชเลย

หากได้รับคำตอบดังนี้

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

โปรดตรวจสอบให้แน่ใจว่าคุณใช้สตริงที่ระบุด้านบน ("ZWRnZWNsaTplZGdlY2xpc2VjcmV0") สำหรับ Authorization ในคำขอ