คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ประเภทการให้สิทธิ์ของเจ้าของทรัพยากร (หรือ "รหัสผ่าน") มักจะใช้ในกรณีที่แอป มีความเชื่อถือได้สูง ในการกำหนดค่านี้ ผู้ใช้จะเป็นผู้ระบุข้อมูลเข้าสู่ระบบเซิร์ฟเวอร์ทรัพยากร (ชื่อผู้ใช้/รหัสผ่าน) ไปยังแอปไคลเอ็นต์ ซึ่งจะส่งคำขอโทเค็นเพื่อการเข้าถึงไปยัง Apigee Edge เซิร์ฟเวอร์ข้อมูลประจำตัวจะตรวจสอบข้อมูลเข้าสู่ระบบ และหากข้อมูลถูกต้อง Edge จะดำเนินการสร้าง (Mint) โทเค็นเพื่อการเข้าถึง แล้วส่งกลับไปยังแอป
เกี่ยวกับหัวข้อนี้
หัวข้อนี้นำเสนอคำอธิบายทั่วไปและภาพรวมของรหัสผ่านของเจ้าของทรัพยากร 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-Sample ซึ่งอยู่บน GitHub
4. Edge จะประมวลผล ข้อมูลเข้าสู่ระบบ
หลังจากตรวจสอบแอปไคลเอ็นต์แล้ว คุณจะใช้นโยบายข้อความไฮไลต์บริการหรือ JavaScript เพื่อเรียกใช้ได้ บริการระบุตัวตน โดยส่งข้อมูลเข้าสู่ระบบของผู้ใช้ ตัวอย่างเช่น อาจเป็นบริการ LDAP หรือบริการใดๆ ที่คุณต้องการใช้เพื่อตรวจสอบข้อมูลเข้าสู่ระบบ สำหรับรายละเอียดเกี่ยวกับนโยบายเหล่านี้ ดูตัวแปรการดึงข้อมูล นโยบาย และ JavaScript นโยบาย
หากบริการข้อมูลประจำตัวตรวจสอบความถูกต้องของข้อมูลเข้าสู่ระบบ และแสดงการตอบกลับ 200 Edge จะ ดำเนินการตามคำขอต่อไป มิฉะนั้น Edge จะหยุดประมวลผลและแสดงข้อผิดพลาดไปยัง แอปไคลเอ็นต์
5. นโยบาย OAuthV2 ดำเนินการ
หากข้อมูลเข้าสู่ระบบถูกต้อง ขั้นตอนต่อไปคือให้บังคับใช้นโยบาย OAuthV2 สำหรับประเภทการให้รหัสผ่าน ดังตัวอย่างต่อไปนี้ <ชื่อผู้ใช้> และ <PassWord> เอลิเมนต์ที่จำเป็น และสามารถดึงข้อมูล จากตัวแปรโฟลว์ที่ ได้รับการบันทึกไว้ในนโยบาย ExtractVariable หากต้องการข้อมูลอ้างอิงโดยละเอียดเกี่ยวกับนโยบายนี้ โปรดดูนโยบาย 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