การใช้งานประเภทการให้สิทธิ์รหัสผ่าน

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

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

เกี่ยวกับหัวข้อนี้

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

ตัวอย่างที่คุณอาจพบว่ามีประโยชน์

  • การขอ โทเค็นเพื่อการเข้าถึง: ประเภทการให้สิทธิ์รหัสผ่าน: แสดงวิธีสร้างคำขอโทเค็น กำหนดค่านโยบาย OAuthV2 สำหรับประเภทการให้สิทธิ์รหัสผ่าน และวิธีกำหนดค่าปลายทางสำหรับนโยบายใน Edge
  • oauth-validate-key-secret: พร็อกซีตัวอย่างใน GitHub ที่คุณสามารถติดตั้งใช้งานใน Edge และลองใช้ ได้ ซึ่งเป็นตัวอย่างแบบครบวงจรที่มีประเภทการให้สิทธิ์รหัสผ่าน และแสดงแนวทางปฏิบัติแนะนำในการตรวจสอบสิทธิ์ข้อมูลเข้าสู่ระบบ (คีย์/รหัสลับ) ของแอปไคลเอ็นต์ก่อนที่จะส่งข้อมูลเข้าสู่ระบบของผู้ใช้ไปยังผู้ให้บริการข้อมูลประจำตัว

วิดีโอ

วิดีโอ: ดูวิดีโอนี้เกี่ยวกับการติดตั้งใช้งานประเภทการให้สิทธิ์รหัสผ่าน

กรณีการใช้งาน

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

แผนผังโฟลว์

แผนผังโฟลว์ต่อไปนี้แสดงโฟลว์ประเภทการให้สิทธิ์รหัสผ่านของเจ้าของทรัพยากร โดยมี Apigee Edge เป็นเซิร์ฟเวอร์การให้สิทธิ์

เคล็ดลับ: หากต้องการดูแผนผังเวอร์ชันที่ใหญ่ขึ้น ให้คลิกขวาที่แผนผังแล้วเปิดใน แท็บใหม่ หรือบันทึกแล้วเปิดในโปรแกรมดูรูปภาพ

ขั้นตอนในโฟลว์ประเภทการให้สิทธิ์รหัสผ่าน

ต่อไปนี้เป็นข้อมูลสรุปขั้นตอนที่ต้องใช้ในการติดตั้งใช้งานประเภทการให้สิทธิ์รหัสผ่าน โดยมี Apigee Edge เป็นเซิร์ฟเวอร์การให้สิทธิ์

ข้อกำหนดเบื้องต้น: แอปไคลเอ็นต์ต้องลงทะเบียนกับ Apigee Edge เพื่อ รับคีย์รหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ ดูรายละเอียดได้ที่การลงทะเบียนแอปไคลเอ็นต์สำหรับ

1. ผู้ใช้ เริ่มโฟลว์และป้อนข้อมูลเข้าสู่ระบบ

เมื่อแอปต้องเข้าถึงทรัพยากรที่ได้รับการปกป้องของผู้ใช้ (เช่น ผู้ใช้คลิกปุ่ม ในแอป) ระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยังแบบฟอร์มเข้าสู่ระบบ

2. แอปขอโทเค็นเพื่อการเข้าถึงจาก Apigee Edge

แอปจะส่งคำขอโทเค็นเพื่อการเข้าถึง ซึ่งรวมถึงข้อมูลเข้าสู่ระบบของผู้ใช้ ไปยัง ปลายทาง GenerateAccessToken ใน Apigee Edge

ต่อไปนี้เป็นคำขอ POST ตัวอย่าง ซึ่งรวมถึงพารามิเตอร์ที่จำเป็นสำหรับประเภทการให้สิทธิ์นี้

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

หรือคุณจะใช้คำสั่งดังกล่าวในรูปแบบต่อไปนี้ โดยใช้ตัวเลือก -u กับ curl เพื่อสร้างส่วนหัวการตรวจสอบสิทธิ์ขั้นพื้นฐานที่เข้ารหัสแบบ Base64 ให้คุณ

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

(คำสั่งแต่ละรายการควรอยู่ในบรรทัดเดียว)

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

3. Edge จะตรวจสอบแอปไคลเอ็นต์

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

4. Edge จะประมวลผลข้อมูลเข้าสู่ระบบ

หลังจากตรวจสอบแอปไคลเอ็นต์แล้ว คุณสามารถใช้นโยบาย Service Callout หรือ JavaScript เพื่อเรียกใช้ บริการระบุตัวตน โดยส่งข้อมูลเข้าสู่ระบบของผู้ใช้ เช่น บริการ LDAP หรือบริการใดก็ตามที่คุณต้องการใช้เพื่อตรวจสอบข้อมูลเข้าสู่ระบบ ดูรายละเอียดเกี่ยวกับนโยบายเหล่านี้ได้ที่ นโยบาย Extract Variables และนโยบาย JavaScript

หากบริการระบุตัวตนตรวจสอบข้อมูลเข้าสู่ระบบและแสดงการตอบกลับ 200 Edge จะ ประมวลผลคำขอต่อไป มิเช่นนั้น Edge จะหยุดประมวลผลและแสดงข้อผิดพลาดไปยัง แอปไคลเอ็นต์

5. นโยบาย OAuthV2 จะทำงาน

หากข้อมูลเข้าสู่ระบบถูกต้อง ขั้นตอนการประมวลผลถัดไปคือการใช้นโยบาย OAuthV2 ที่กำหนดค่าไว้สำหรับประเภทการให้สิทธิ์รหัสผ่าน ดังตัวอย่างต่อไปนี้ องค์ประกอบ <UserName> และ <PassWord> เป็นองค์ประกอบที่จำเป็น และคุณสามารถดึงข้อมูลดังกล่าวจากตัวแปรโฟลว์ที่ บันทึกไว้ด้วยนโยบาย ExtractVariables ดูข้อมูลอ้างอิงโดยละเอียดเกี่ยวกับนโยบายนี้ได้ที่ ดู นโยบาย OAuthV2

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>360000000</ExpiresIn> 
  <SupportedGrantTypes> 
     <GrantType>password</GrantType> 
  </SupportedGrantTypes> 
  <GrantType>request.queryparam.grant_type</GrantType> 
  <UserName>login</UserName>
  <PassWord>password</PassWord>
  <GenerateResponse/> 
</OAuthV2>

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

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799",
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "0",
    "refresh_count": "0"
}

6. ไคลเอ็นต์เรียกใช้ API ที่ได้รับการปกป้อง

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

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