การใช้ OAuth2 เพื่อเข้าถึง Edge API

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

Apigee Edge ให้คุณเรียกใช้ Edge API ที่ได้รับการตรวจสอบสิทธิ์ด้วยโทเค็น OAuth2 ได้ การรองรับ OAuth2 จะเปิดใช้โดยค่าเริ่มต้นใน Edge สําหรับบัญชีระบบคลาวด์ หากคุณใช้ Edge สำหรับ Private Cloud คุณจะใช้ OAuth2 โดยไม่มี ตั้งค่า SAML หรือ LDAP ก่อน

วิธีการทำงานของ OAuth2 (ด้วย Apigee Edge API)

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

ตัวอย่างเช่น หากต้องการรายละเอียดเกี่ยวกับองค์กรใน Edge คุณจะต้องส่งคำขอไปยัง URL มีลักษณะดังนี้

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

แต่คุณส่งคำขอดังกล่าวโดยไม่ได้บอกให้เราทราบว่าคุณเป็นใครไม่ได้ หรือทุกคน จะดูรายละเอียดขององค์กรได้

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

โชคดีที่รับโทเค็นได้โดยการส่งข้อมูลเข้าสู่ระบบไปยังบริการ Edge OAuth2 ตอบสนองด้วยโทเค็นเพื่อการเข้าถึงและรีเฟรช

ขั้นตอน OAuth2: คำขอเริ่มต้น

รูปภาพต่อไปนี้แสดงขั้นตอน OAuth2 เมื่อคุณเข้าถึง Edge API สำหรับ เวลา:

วันที่ ขั้นตอน OAuth: คำขอแรก
รูปที่ 1: ขั้นตอน OAuth: คำขอแรก

ตามรูปที่ 1 เมื่อคุณส่งคำขอไปยัง Edge API เป็นครั้งแรก สิ่งที่จะเกิดขึ้นมีดังนี้

  1. คุณขอโทเค็นเพื่อการเข้าถึง คุณสามารถดำเนินการได้ด้วย Edge API, acurl หรือ get_token ดังตัวอย่างต่อไปนี้
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. บริการ Edge OAuth2 ตอบกลับด้วยโทเค็นเพื่อการเข้าถึง แล้วพิมพ์ไปยัง stdout เช่น วันที่
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    ยูทิลิตี acurl และ get_token จะบันทึกการเข้าถึงและ โทเค็นการรีเฟรชไปยัง ~/.sso-cli (โทเค็นการรีเฟรชจะไม่เขียนไปยัง stdout) หากใช้บริการ Edge OAuth2 เพื่อรับโทเค็น คุณต้องบันทึกไว้เพื่อใช้ ใช้งานในภายหลัง

  3. คุณส่งคำขอไปยัง Edge API ด้วยโทเค็นเพื่อการเข้าถึง แนบ acurl รายการ โทเค็นโดยอัตโนมัติ เช่น วันที่
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    หากคุณใช้ไคลเอ็นต์ HTTP อื่น โปรดเพิ่มโทเค็นเพื่อการเข้าถึง เช่น

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API จะดำเนินการตามคำขอของคุณและมักจะส่งคืนคำตอบพร้อมข้อมูล

ขั้นตอน OAuth2: คำขอที่ตามมา

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

วันที่ ขั้นตอน OAuth: คำขอที่ตามมา
รูปที่ 2: ขั้นตอน OAuth: คำขอที่ตามมา

ตามที่รูปที่ 2 แสดง เมื่อคุณมีโทเค็นเพื่อการเข้าถึงแล้ว ให้ดำเนินการดังนี้

  1. คุณส่งคำขอไปยัง Edge API ด้วยโทเค็นเพื่อการเข้าถึง แนบ acurl รายการ โทเค็นโดยอัตโนมัติ หากใช้เครื่องมืออื่น คุณจะต้องเพิ่มโทเค็นด้วยตนเอง
  2. Edge API จะดำเนินการตามคำขอของคุณและมักจะส่งคืนคำตอบพร้อมข้อมูล

ขั้นตอน OAuth2: เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุ

เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุ (หลังจาก 12 ชั่วโมง) คุณสามารถใช้โทเค็นการรีเฟรชเพื่อรับ โทเค็นเพื่อการเข้าถึง:

วันที่ ขั้นตอน OAuth: การรีเฟรชโทเค็นเพื่อการเข้าถึง
รูปที่ 3: โฟลว์ OAuth: การรีเฟรชโทเค็นเพื่อการเข้าถึง

ดังที่แสดงในรูปที่ 3 เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุ

  1. คุณส่งคำขอไปยัง Edge API แต่โทเค็นเพื่อการเข้าถึงหมดอายุแล้ว
  2. Edge API จะปฏิเสธคำขอว่าไม่ได้รับอนุญาต
  3. คุณส่งโทเค็นการรีเฟรชไปยังบริการ Edge OAuth2 หากคุณใช้ acurl เท่านี้ก็เรียบร้อย ให้คุณโดยอัตโนมัติ
  4. บริการ Edge OAuth2 ตอบสนองด้วยโทเค็นเพื่อการเข้าถึงใหม่
  5. คุณส่งคำขอไปยัง Edge API ด้วยโทเค็นเพื่อการเข้าถึงใหม่
  6. Edge API จะดำเนินการตามคำขอของคุณและมักจะส่งคืนคำตอบพร้อมข้อมูล

รับโทเค็น

ในการรับโทเค็นเพื่อการเข้าถึงที่คุณสามารถส่งไปยัง Edge API ได้ คุณสามารถใช้สิ่งต่อไปนี้ ยูทิลิตี Apigee เพิ่มเติมจากยูทิลิตี เช่น curl

  • ยูทิลิตี get_token: แลกเปลี่ยนข้อมูลเข้าสู่ระบบ Apigee เพื่อการเข้าถึง และรีเฟรชโทเค็นที่คุณสามารถใช้เพื่อเรียกใช้ Edge API ได้
  • acurlยูทิลิตี: ให้ Wrapper ของฟังก์ชันมาตรฐาน คำสั่ง curl สร้างคำขอ HTTP ไปยัง Edge API จะได้รับสิทธิ์เข้าถึงและรีเฟรชโทเค็นจาก get_token และส่งผ่านโทเค็นเพื่อการเข้าถึงไปยัง Edge API
  • ปลายทางโทเค็นในบริการ Edge OAuth2: Exchange your ข้อมูลเข้าสู่ระบบ Apigee สำหรับโทเค็นเพื่อการเข้าถึงและรีเฟรชผ่านการเรียกใช้ Edge API

ยูทิลิตีเหล่านี้จะแลกเปลี่ยนข้อมูลเข้าสู่ระบบบัญชี Apigee ของคุณ (อีเมลและ รหัสผ่าน) สำหรับโทเค็นที่มีระยะเวลาดังต่อไปนี้

  • โทเค็นเพื่อการเข้าถึงจะหมดอายุใน 12 ชั่วโมง
  • โทเค็นการรีเฟรชจะหมดอายุใน 30 วัน

ดังนั้น เมื่อคุณเรียก API กับ acurl หรือ get_token สำเร็จแล้ว คุณจะใช้คู่โทเค็นต่อได้เป็นเวลา 30 วัน หลังจากหมดอายุ คุณต้องป้อน ข้อมูลเข้าสู่ระบบของคุณและรับโทเค็นใหม่

เข้าถึง Edge API ด้วย OAuth2

หากต้องการเข้าถึง Edge API ให้ส่งคำขอไปยังปลายทาง API และรวมโทเค็นเพื่อการเข้าถึง คุณจะดำเนินการได้โดยใช้ไคลเอ็นต์ HTTP ใดก็ได้ รวมถึงยูทิลิตีบรรทัดคำสั่ง เช่น curl UI บนเบราว์เซอร์ เช่น Postman หรือยูทิลิตี Apigee เช่น acurl

เราได้อธิบายการเข้าถึง Edge API ด้วย acurl และ curl ไว้ใน ส่วนต่างๆ ที่ตามมา

ใช้ acurl

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

ในคำขอที่ตามมา acurl จะใช้โทเค็นที่บันทึกไว้ใน ~/.sso-cli ดังนั้น ว่าคุณจะไม่ต้องใส่ข้อมูลรับรองอีกครั้งจนกว่าโทเค็นจะหมดอายุ

ตัวอย่างต่อไปนี้แสดงคำขอ acurl แรกที่ได้รับรายละเอียดของ "ahamilton-eval" องค์กร:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

นอกจากการรับรายละเอียดเกี่ยวกับองค์กรแล้ว ตัวอย่างนี้ยังแสดงคำขอที่ 2 ด้วย ที่รับรายการนโยบายภายใน "helloworld" พร็อกซี API คำขอที่ 2 ใช้เมธอด กำลังย่อ "o" สำหรับ "องค์กร" ใน URL

โปรดทราบว่า acurl จะส่งโทเค็นเพื่อการเข้าถึงในคำขอที่ 2 โดยอัตโนมัติ คุณ ไม่จำเป็นต้องส่งข้อมูลเข้าสู่ระบบของผู้ใช้เมื่อ acurl จัดเก็บโทเค็น OAuth2 ทั้งนี้ รับโทเค็นจาก ~/.sso-cli สำหรับการเรียกครั้งต่อๆ มา

ดูข้อมูลเพิ่มเติมได้ที่การใช้ acurl เพื่อเข้าถึง Edge API

ใช้ curl

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

หลังจากที่คุณบันทึกโทเค็นเพื่อการเข้าถึงเรียบร้อยแล้ว ให้ส่งโทเค็นเพื่อการเข้าถึงใน ส่วนหัว Authorization ของการเรียกไปยัง Edge API ตามตัวอย่างต่อไปนี้ แสดง:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

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

การหมดอายุของโทเค็น

เมื่อโทเค็นเพื่อการเข้าถึงหมดอายุ คุณสามารถใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ได้โดยไม่ต้อง โดยต้องส่งข้อมูลรับรองอีกครั้ง

วิธีรีเฟรชโทเค็นเพื่อการเข้าถึงจะขึ้นอยู่กับเครื่องมือที่คุณใช้ ดังนี้

  • acurl: ไม่ต้องดำเนินการใดๆ acurl จะรีเฟรชโทเค็นเพื่อการเข้าถึงโดยอัตโนมัติ เมื่อคุณส่งคำขอที่มีข้อมูลที่ล้าสมัย
  • get_token: เรียกใช้ get_token เพื่อรีเฟรชโทเค็นเพื่อการเข้าถึง
  • บริการ Edge OAuth2: ส่งคำขอที่มีข้อมูลต่อไปนี้
    • โทเค็นการรีเฟรช
    • ตั้งค่าพารามิเตอร์แบบฟอร์ม grant_type เป็น "refresh_token"

OAuth2 สำหรับผู้ใช้เครื่อง

คุณสามารถใช้ยูทิลิตี acurl และ get_token เพื่อเขียนสคริปต์การเข้าถึงแบบอัตโนมัติได้ ไปยัง Edge API ด้วยการตรวจสอบสิทธิ์ OAuth2 สำหรับผู้ใช้เครื่อง ตัวอย่างต่อไปนี้จะแสดงวิธีการ ใช้ get_token เพื่อ ขอโทเค็นเพื่อการเข้าถึง แล้วเพิ่มค่าโทเค็นลงในการเรียก curl:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

หรือรวมคำขอโทเค็นและการเรียกใช้ curl โดยใช้ยูทิลิตี acurl ก็ได้ เช่น

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

ในทั้ง 2 ตัวอย่าง การตั้งค่า -m เป็นสตริงว่างเปล่าจะป้องกันไม่ให้ผู้ใช้เครื่อง ไม่ให้ถูกขอให้ป้อนรหัส MFA