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 Developer Services ได้ที่ลงทะเบียนแอปและจัดการคีย์

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

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

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

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

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

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

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

ยืนยันนโยบาย OAuthTokens ประเภท OAuthV2

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

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

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

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

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

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

จากภาพรวมสำหรับ Weatherapi ให้เลือกมุมมองพัฒนา

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

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

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

เลือก Add จากนั้นระบบจะสร้างนโยบายและแนบกับ PreFlow คำขอของ Weatherapi

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

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

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

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

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

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

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

$ 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)

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

ในมุมมองรายละเอียดสำหรับแอปที่คุณเลือก ให้จดช่องสำหรับคีย์ผู้ใช้ และข้อมูลลับของผู้ใช้ ค่า 2 รายการนี้คือข้อมูลเข้าสู่ระบบไคลเอ็นต์ที่คุณจะใช้เพื่อรับโทเค็นเพื่อการเข้าถึง 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

ตัวอย่างเช่น ถ้าชื่อองค์กรของคุณคือ "apimakers" URL จะเป็น:

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

นี่คือ URL ที่นักพัฒนาแอปใช้เพื่อขอโทเค็นเพื่อการเข้าถึง

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

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

OAuth 1.0

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

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

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