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

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