OAuth

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

OAuth ได้กลายเป็นโปรโตคอลการให้สิทธิ์ชั้นนำสำหรับ API เวอร์ชัน ของ OAuth ที่ครอบคลุมรายละเอียดในหัวข้อนี้ได้ระบุไว้ใน OAuth 2.0 ข้อกำหนด

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

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

การกำหนดค่า OAuth เริ่มต้นสำหรับ องค์กร

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

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการออกข้อมูลเข้าสู่ระบบให้กับแอปที่ใช้บริการสำหรับนักพัฒนาซอฟต์แวร์ Edge โปรดดู ลงทะเบียนแอปและจัดการคีย์

ด้วยเหตุนี้ การ "เพิ่มขึ้น" จึงเป็นเรื่องง่าย รูปแบบความปลอดภัยของ API จากคีย์ API ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth ทั้ง 2 รูปแบบจะใช้คีย์และข้อมูลลับของผู้ใช้เดียวกันเพื่อ ตรวจสอบแอปไคลเอ็นต์ ความแตกต่างคือ ข้อมูลเข้าสู่ระบบไคลเอนต์จะให้ เนื่องจากคุณสามารถเพิกถอนโทเค็นเพื่อการเข้าถึงได้ง่ายๆ เมื่อจำเป็น คีย์ผู้ใช้ของแอป หากต้องการทำงานกับปลายทาง OAuth เริ่มต้น คุณสามารถใช้คีย์ผู้ใช้ใดก็ได้ และข้อมูลลับที่สร้างขึ้นสำหรับแอปในองค์กรเพื่อเรียกโทเค็นเพื่อการเข้าถึงจากโทเค็น ปลายทาง (คุณยังสามารถเปิดใช้ข้อมูลเข้าสู่ระบบไคลเอ็นต์สำหรับแอปที่มีคีย์ผู้ใช้อยู่แล้วและ secrets.)

ดูข้อกำหนดฉบับเต็มสำหรับการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ได้ที่ OAuth 2.0 ข้อมูลจำเพาะ

ปกป้อง API ของคุณด้วยนโยบาย

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

คุณจะเพิ่มการยืนยัน OAuth ไปยัง API ได้อย่างง่ายดายเมื่อสร้าง พร็อกซี API ใหม่ เมื่อสร้างพร็อกซี API ใหม่ คุณจะเพิ่มฟีเจอร์ได้ อาส ที่แสดงด้านล่าง คุณสามารถเพิ่มการยืนยันโทเค็นเพื่อการเข้าถึง OAuth 2.0 โดยเลือกปุ่มตัวเลือก ถัดจากรักษาความปลอดภัยด้วยโทเค็นเพื่อการเข้าถึง OAuth v2.0 เมื่อคุณเลือกตัวเลือกนี้ สอง ระบบจะแนบนโยบายกับพร็อกซี API ที่สร้างขึ้นใหม่ นโยบายหนึ่งสำหรับยืนยันโทเค็นเพื่อการเข้าถึง และอีกรายการหนึ่ง เพื่อตัดโทเค็นเพื่อการเข้าถึงหลังจากได้รับการยืนยันแล้ว

นอกจากนี้ เมื่อคุณเลือกตัวเลือกรักษาความปลอดภัยด้วยโทเค็นเพื่อการเข้าถึง OAuth v2.0 เลือกช่องทำเครื่องหมายผลิตภัณฑ์ API การเผยแพร่ได้ และระบบจะ ที่เลือกไว้ เลือกตัวเลือกนี้หากต้องการสร้างผลิตภัณฑ์โดยอัตโนมัติเมื่อสร้าง API ใหม่ พร็อกซี ผลิตภัณฑ์ที่สร้างโดยอัตโนมัติจะสร้างขึ้นโดยเชื่อมโยงกับพร็อกซี API ใหม่ หากคุณ มีผลิตภัณฑ์ที่คุณต้องการเชื่อมโยง API ใหม่นี้ อย่าลืมล้างข้อมูลนี้ ช่องทำเครื่องหมายเพื่อที่คุณจะได้ไม่สร้างผลิตภัณฑ์ที่ไม่จำเป็น สำหรับข้อมูลเกี่ยวกับผลิตภัณฑ์ โปรดดู ผลิตภัณฑ์ API คืออะไร

หากต้องการเปิดใช้การยืนยันโทเค็นเพื่อการเข้าถึงสำหรับพร็อกซี API ที่มีอยู่แล้ว เพียงแค่แนบนโยบายประเภท OAuthV2 กับ API ที่คุณ ต้องการปกป้อง นโยบาย OAuthV2 ทำงานโดยการระบุการดำเนินการ หากคุณต้องการ ในการตรวจสอบโทเค็นเพื่อการเข้าถึง ให้ระบุการดำเนินการที่ชื่อว่า VerifyAccessToken (การดำเนินการประเภทอื่นๆ ที่ ประเภทนโยบาย OAuthV2 ที่รองรับ ได้แก่ GenerateAccessToken และ GenerateRefreshToken คุณจะได้ทราบเกี่ยวกับการดำเนินการเหล่านี้เมื่อตั้งค่า ปลายทาง OAuth)

นโยบาย VerifyOAuthTokens ประเภท OAuthV2

นโยบายตัวอย่างเพื่อตรวจสอบโทเค็นเพื่อการเข้าถึงมีลักษณะดังนี้ (การตั้งค่าคือ ดังที่อธิบายไว้ในตารางด้านล่าง)

<OAuthV2 name="VerifyOAuthTokens"> 
  <Operation>VerifyAccessToken</Operation> 
</OAuthV2>

การตั้งค่านโยบาย

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
OAuthV2 ประเภทนโยบาย
name ชื่อของนโยบายที่ใช้อ้างอิงในปลายทางพร็อกซี API การกำหนดค่า ไม่มี ใช่
Operation การดำเนินการที่นโยบาย OAuthV2 จะเรียกใช้ เมื่อระบุ VerifyAccessToken คุณจะกำหนดค่านโยบายเพื่อตรวจสอบคำขอโทเค็นเพื่อการเข้าถึง และยืนยันว่าการเข้าถึง โทเค็นถูกต้อง ยังไม่หมดอายุ และได้รับอนุมัติให้ใช้ทรัพยากร API ที่ขอ (URI) (หากต้องการตรวจสอบ นโยบายจะอ่านผลิตภัณฑ์ API ที่แอปได้รับอนุมัติ consume.) ไม่มี ใช่

หากต้องการสร้างนโยบายนี้ใน UI การจัดการ ให้ไปที่ API > API พร็อกซี

เลือก weatherapi จากรายการพร็อกซี API

จากภาพรวมสำหรับ Weatherapi ให้เลือกปุ่ม Develop

จากเมนูแบบเลื่อนลง ให้เลือกนโยบายใหม่ > OAuth เวอร์ชัน 2.0

หลังจากที่เลือกนโยบาย OAuth v2.0 แล้ว เมนูการกำหนดค่านโยบายใหม่ จะปรากฏขึ้น

ตั้งชื่อที่สื่อความหมายให้นโยบาย และอย่าลืมเลือกแนบนโยบาย Flow PreFlow และคำขอเป็นการตั้งค่าไฟล์แนบนโยบาย

เลือก Add แล้วสร้างนโยบายและแนบไปกับคำขอของ weatherapi PreFlow

หลังจากที่คุณเพิ่มนโยบาย การกำหนดค่า PreFlow ของคำขอด้านล่างจะแสดงใน แผงนักออกแบบ

หากคุณทำงานภายในเครื่องมือแก้ไขข้อความหรือ IDE คุณจะต้องแนบ นโยบายกับคำขอ PreFlow ของพร็อกซี API ที่คุณต้องการปกป้อง

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthTokens</Name></Step>
  </Request>
</PreFlow>

การแนบนโยบายไปกับ PreFlow ของคำขอจะทำให้มั่นใจได้ว่าจะมีการบังคับใช้นโยบายเสมอ ในข้อความคำขอทั้งหมด

ตอนนี้คุณรักษาความปลอดภัยให้ API ด้วยข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth 2.0 แล้ว ขั้นตอนถัดไปคือการเรียนรู้วิธีการ เพื่อรับโทเค็นเพื่อการเข้าถึง และใช้เพื่อเข้าถึง API ที่ปลอดภัย

การใช้โทเค็นเพื่อการเข้าถึงเพื่อเข้าถึง ทรัพยากร

ตอนนี้ Weatherapi มีการรักษาความปลอดภัยด้วย OAuth 2.0 แล้ว แอปจึงต้องแสดงโทเค็นเพื่อการเข้าถึงเพื่อใช้ API ในการเข้าถึงทรัพยากรที่มีการป้องกัน แอปจะแสดงโทเค็นเพื่อการเข้าถึงในคำขอเป็น "การให้สิทธิ์" ส่วนหัว HTTP ดังนี้

$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

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

แต่แอปจะได้รับโทเค็นเพื่อการเข้าถึงอย่างไร เราจะอธิบายเรื่องนี้ในส่วนถัดไป

วิธีแลกเปลี่ยนข้อมูลเข้าสู่ระบบของลูกค้าสำหรับ โทเค็นเพื่อการเข้าถึง

แอปได้รับโทเค็นเพื่อการเข้าถึงโดยแสดงคู่คีย์/ข้อมูลลับของผู้ใช้กับโทเค็น ปลายทาง ปลายทางของโทเค็นได้รับการกำหนดค่าในพร็อกซี API ที่เรียกว่า oauth ดังนั้นแอปจึงต้องเรียก API ที่เปิดเผยโดย oauth API เพื่อรับโทเค็นเพื่อการเข้าถึง หลังจากที่แอปมีโทเค็นเพื่อการเข้าถึงแล้ว แอปจะสามารถเรียกใช้ weatherapi ได้ ซ้ำๆ จนกว่าโทเค็นเพื่อการเข้าถึงจะหมดอายุหรือโทเค็นเพื่อการเข้าถึงถูกเพิกถอน

ตอนนี้คุณต้องเปลี่ยนวิธีการทำงานเพื่อคิดว่าตัวเองเป็นนักพัฒนาแอป คุณต้องการเรียก Weatherapi ดังนั้นคุณต้องขอโทเค็นเพื่อการเข้าถึงสำหรับแอปของคุณ สิ่งแรกที่คุณต้องทำคือ รับคู่คีย์และข้อมูลลับของผู้ใช้ (หรือที่เรียกว่า API หรือคีย์แอป)

คุณจะได้รับคีย์และข้อมูลลับของผู้ใช้ได้โดยการลงทะเบียนแอปในองค์กรของคุณบน Apigee Edge

คุณดูแอปทั้งหมดในองค์กรได้ใน UI การจัดการของ Apigee Edge

รายการแอปที่ลงทะเบียนในองค์กรจะปรากฏขึ้น

(หากไม่มีแอปปรากฏขึ้น คุณสามารถเรียนรู้วิธีลงทะเบียนแอปในหัวข้อที่เรียกว่าลงทะเบียนแอปและจัดการ API )

เลือกแอปจากรายการเพื่อดูโปรไฟล์โดยละเอียด

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

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \
-u myname:mypass 

การเรียกนี้จะแสดงรายการแอปตามรหัสแอป

[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]

คุณสามารถเรียกโปรไฟล์ของแอปโดยเรียก GET ง่ายๆ โดยใช้รหัสแอป ดังนี้

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \
-u myname:mypass 

เช่น

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \
-u myname:mypass 

การเรียก API จะแสดงโปรไฟล์ของแอปที่คุณระบุ เช่น โปรไฟล์แอปสำหรับ weatherapp มีการแทน JSON ต่อไปนี้

{
  "accessType" : "read",
  "apiProducts" : [ ],
  "appFamily" : "default",
  "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db",
  "attributes" : [ ],
  "callbackUrl" : "http://weatherapp.com",
  "createdAt" : 1380290158713,
  "createdBy" : "noreply_admin@apigee.com",
  "credentials" : [ {
    "apiProducts" : [ {
      "apiproduct" : "PremiumWeatherAPI",
      "status" : "approved"
    } ],
    "attributes" : [ ],
    "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
    "consumerSecret" : "hAr4Gn0gA9vAyvI4",
    "expiresAt" : -1,
    "issuedAt" : 1380290161417,
    "scopes" : [ ],
    "status" : "approved"
  } ],
  "developerId" : "5w95xGkpnjzJDBT4",
  "lastModifiedAt" : 1380290158713,
  "lastModifiedBy" : "noreply_admin@apigee.com",
  "name" : "weatherapp",
  "scopes" : [ ],
  "status" : "approved"
}

จดบันทึกค่าสำหรับ consumerKey และ consumerSecret คุณใช้รายการเหล่านี้ ข้อมูลเข้าสู่ระบบ เพื่อรับโทเค็นเพื่อการเข้าถึงโดยแสดงเป็นข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์พื้นฐานใน คำขอ HTTP ดังที่แสดงด้านล่าง ประเภทการให้สิทธิ์จะแสดงเป็นพารามิเตอร์การค้นหาต่อคำขอ (อย่าลืมเปลี่ยนค่าของตัวแปร {org_name} เพื่อแสดงชื่อองค์กร บน Apigee Edge)

สร้างคำขอเพื่อรับโทเค็นเพื่อการเข้าถึง

ในคำขอต่อไปนี้ ให้ใช้ค่า consumerKey แทน client_id แทนที่ค่าของ consumerSecret ที่เกี่ยวข้องสำหรับ client_secret

$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'

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

{
  "issued_at" : "1380892555397",
  "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b",
  "scope" : "",
  "status" : "approved",
  "api_product_list" : "[oauth-test]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K",
  "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z",
  "organization_name" : "rqa",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

จดค่า access_token ในคำตอบด้านบน ซึ่งเป็นโทเค็นเพื่อการเข้าถึง แอปจะใช้เพื่อรับสิทธิ์เข้าถึงรันไทม์สำหรับทรัพยากรที่มีการป้องกัน โทเค็นเพื่อการเข้าถึงของแอปนี้คือ ylSkZIjbdWybfs4fUQe9BqP0LH5Z

ตอนนี้คุณมีโทเค็นเพื่อการเข้าถึงที่ถูกต้อง ylSkZIjbdWybfs4fUQe9BqP0LH5Z ซึ่งสามารถใช้ได้แล้ว เพื่อเข้าถึง API ที่มีการป้องกัน

การทำงานกับการกำหนดค่า OAuth เริ่มต้น

แต่ละองค์กร (หรือองค์กรที่ทดลองใช้ฟรี) ใน Apigee Edge จะได้รับการจัดสรรด้วยโทเค็น OAuth ปลายทาง ปลายทางได้รับการกำหนดค่าล่วงหน้าด้วยนโยบายในพร็อกซี API ที่เรียกว่า oauth คุณเริ่มใช้ปลายทางของโทเค็นได้ทันทีที่สร้างบัญชี ใน Apigee Edge

ปลายทาง OAuth เริ่มต้นจะแสดง URI ปลายทางต่อไปนี้

/oauth/client_credential/accesstoken

เผยแพร่ URI นี้กับนักพัฒนาซอฟต์แวร์ที่ต้องการโทเค็นเพื่อการเข้าถึง นักพัฒนาแอปกำหนดค่า แอปสำหรับเรียกปลายทางนี้ โดยแสดงคู่คีย์และข้อมูลลับของผู้ใช้เพื่อรับสิทธิ์เข้าถึง โทเค็น

ปลายทางโทเค็นข้อมูลเข้าสู่ระบบไคลเอ็นต์เริ่มต้นจะแสดงผ่านเครือข่ายที่ URL

https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken

เช่น หากชื่อองค์กรของคุณคือ "apimaker" URL จะเป็น

https://apimakers-test.apigee.net/oauth/client_credential/accesstoken

นี่คือ URL ที่นักพัฒนาซอฟต์แวร์เรียกใช้เพื่อรับโทเค็นเพื่อการเข้าถึง

การกำหนดค่า OAuth แบบ 3 ทาง

การกำหนดค่า OAuth แบบ 3 ทาง (รหัสการให้สิทธิ์ การให้สิทธิ์โดยนัย และการให้สิทธิ์รหัสผ่าน) ประเภท) กำหนดให้คุณซึ่งเป็นผู้ให้บริการ API ตรวจสอบสิทธิ์ผู้ใช้ปลายทางของแอป เนื่องจากทุก องค์กรตรวจสอบสิทธิ์ผู้ใช้ได้หลายวิธี โดยต้องมีการปรับแต่งนโยบายหรือโค้ดบางอย่าง เพื่อผสานรวม OAuth กับ User Store เช่น ระบบอาจเก็บข้อมูลผู้ใช้ทั้งหมดไว้ใน "ใช้งานอยู่" ไดเรกทอรีใน LDAP หรือที่เก็บผู้ใช้อื่นๆ เมื่อต้องการเริ่มต้น OAuth แบบ 3 ทาง คุณต้อง เพื่อผสานรวมการตรวจสอบกับที่เก็บผู้ใช้นี้ไว้ในขั้นตอนโดยรวมของ OAuth

OAuth 1.0a

โปรดดูรายละเอียดนโยบาย OAuth 1.0a ที่หัวข้อนโยบาย OAuth v1.0a

รับความช่วยเหลือ

สำหรับความช่วยเหลือ โปรดดู Apigee การสนับสนุนลูกค้า