คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
เมื่อใช้ประเภทการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ แอปจะส่งข้อมูลเข้าสู่ระบบของตนเอง (รหัสไคลเอ็นต์และ รหัสลับไคลเอ็นต์) ไปยังปลายทางใน Apigee Edge ที่ตั้งค่าเพื่อสร้างโทเค็นเพื่อการเข้าถึง หาก ข้อมูลเข้าสู่ระบบถูกต้อง Edge จะแสดงโทเค็นเพื่อการเข้าถึงไปยังแอปไคลเอ็นต์
เกี่ยวกับหัวข้อนี้
หัวข้อนี้จะอธิบายคำอธิบายทั่วไปเกี่ยวกับประเภทการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ OAuth 2.0 และ พูดถึงวิธีใช้ขั้นตอนนี้ใน Apigee Edge
กรณีการใช้งาน
โดยทั่วไป การให้สิทธิ์ประเภทนี้จะใช้เมื่อแอปเป็นเจ้าของทรัพยากรด้วย ตัวอย่างเช่น แอปอาจต้องเข้าถึงบริการพื้นที่เก็บข้อมูลในระบบคลาวด์แบ็กเอนด์เพื่อจัดเก็บและดึงข้อมูลที่ เพื่อทำงาน แทนข้อมูลที่ผู้ใช้ปลายทางเป็นเจ้าของโดยเฉพาะ การให้สิทธิ์ประเภทนี้ จะเกิดขึ้นระหว่างแอปไคลเอ็นต์กับเซิร์ฟเวอร์การให้สิทธิ์เท่านั้น ผู้ใช้ปลายทางไม่ได้ มีส่วนร่วมในขั้นตอนประเภทการให้สิทธิ์นี้
บทบาท
บทบาทระบุ "นักแสดง" ที่เข้าร่วมในขั้นตอน OAuth มาดูภาพรวมคร่าวๆ ของ บทบาทข้อมูลเข้าสู่ระบบไคลเอ็นต์เพื่อช่วยแสดงให้เห็นว่า Apigee Edge เหมาะกับจุดไหน เพื่อการเรียนรู้ที่สมบูรณ์ การสนทนาเกี่ยวกับบทบาท OAuth 2.0 โปรดดูข้อกำหนดของ IETF OAuth 2.0
- แอปไคลเอ็นต์ -- แอปที่จำเป็นต้องเข้าถึงการป้องกันของผู้ใช้ ที่ไม่ซับซ้อน โดยปกติแล้ว สำหรับขั้นตอนนี้ แอปจะทำงานบนเซิร์ฟเวอร์มากกว่าในเครื่องของผู้ใช้ แล็ปท็อปหรืออุปกรณ์
- Apigee Edge -- ในขั้นตอนนี้ Apigee Edge คือการให้สิทธิ์ OAuth เซิร์ฟเวอร์ มีหน้าที่สร้างโทเค็นเพื่อการเข้าถึง ตรวจสอบโทเค็นเพื่อการเข้าถึง และมอบโทเค็นที่ผ่านการให้สิทธิ์ คำขอสำหรับทรัพยากรที่มีการป้องกันบนเซิร์ฟเวอร์ทรัพยากร
- เซิร์ฟเวอร์ทรัพยากร -- บริการแบ็กเอนด์ที่เก็บข้อมูลที่มีการป้องกัน ที่แอปไคลเอ็นต์ต้องการสิทธิ์เข้าถึง หากคุณกำลังปกป้องพร็อกซี API ที่โฮสต์บน Apigee Edge แล้ว Apigee Edge ก็คือเซิร์ฟเวอร์ทรัพยากรด้วย
ตัวอย่างโค้ด
คุณสามารถหา ที่สมบูรณ์และใช้งานได้ ตัวอย่างการใช้งานประเภทการให้สิทธิ์ข้อมูลเข้าสู่ระบบไคลเอ็นต์ใน GitHub ดูแหล่งข้อมูลเพิ่มเติมด้านล่างเพื่อดูลิงก์ไปยังตัวอย่างเพิ่มเติม
แผนผังโฟลว์
แผนภาพต่อไปนี้แสดงโฟลว์ข้อมูลเข้าสู่ระบบของไคลเอ็นต์ที่ใช้ Apigee Edge เป็น เซิร์ฟเวอร์การให้สิทธิ์ โดยทั่วไป Edge ยังเป็นเซิร์ฟเวอร์ทรัพยากรในขั้นตอนนี้ ซึ่งก็คือ พร็อกซี API เป็นทรัพยากรที่มีการป้องกัน
ขั้นตอนในข้อมูลเข้าสู่ระบบไคลเอ็นต์
สรุปขั้นตอนที่จำเป็นในการติดตั้งใช้งานประเภทการให้สิทธิ์โค้ดข้อมูลเข้าสู่ระบบไคลเอ็นต์ ที่ Apigee Edge ทำหน้าที่เป็นเซิร์ฟเวอร์การให้สิทธิ์ โปรดทราบว่าสำหรับขั้นตอนนี้ แอปไคลเอ็นต์ เพียงแสดงรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ หากถูกต้องและ Apigee Edge จะส่งกลับข้อผิดพลาด โทเค็นเพื่อการเข้าถึง
สิ่งที่ต้องทำก่อน: แอปไคลเอ็นต์ต้องลงทะเบียนกับ Apigee Edge เพื่อรับ รหัสไคลเอ็นต์และคีย์รหัสลับไคลเอ็นต์ โปรดดูที่การลงทะเบียนแอปไคลเอ็นต์สำหรับ รายละเอียด
1. ลูกค้าขอ โทเค็นเพื่อการเข้าถึง
หากต้องการรับโทเค็นเพื่อการเข้าถึง ไคลเอ็นต์จะโพสต์การเรียก API ไปยัง Edge ด้วยค่าสำหรับรหัสไคลเอ็นต์ และรหัสลับไคลเอ็นต์ที่ได้รับจากแอปของนักพัฒนาซอฟต์แวร์ที่ลงทะเบียนไว้ นอกจากนี้ พารามิเตอร์ ต้องส่งผ่าน Grants_type=client_credentials เป็นพารามิเตอร์การค้นหา (อย่างไรก็ตาม คุณสามารถกำหนดค่า นโยบาย OAuthV2 เพื่อยอมรับพารามิเตอร์นี้ในส่วนหัวหรือเนื้อหาคำขอ โปรดดูรายละเอียดที่นโยบาย OAuthV2)
เช่น
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials&client_id=ns4fQc14Zg4hKFCNaSzArVuwszX95X&client_secret=ZIjFyTsNgQNyxI'
หมายเหตุ: แม้ว่าคุณจะสามารถส่งค่า client_id และ client_secret เป็นคำค้นหาได้ ตามที่แสดงด้านบน คุณควรส่งเป็นสตริงที่เข้ารหัสแบบ base64 URL ใน ส่วนหัวการให้สิทธิ์ คุณต้องใช้เครื่องมือหรือยูทิลิตีการเข้ารหัส base64 เพื่อเข้ารหัสจึงจะเข้ารหัสได้ ให้ทั้ง 2 ค่าใช้ด้วยกันโดยคั่นแต่ละค่าด้วยเครื่องหมายโคลอน ดังนี้ aBase64EncodeFunction(clientidvalue:clientsecret) ดังนั้น ตัวอย่างด้านบนจะมีการเข้ารหัสดังนี้ ดังนี้
results = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // หมายเหตุ เครื่องหมายโคลอนเพื่อคั่นทั้ง 2 ค่า
ผลลัพธ์ของการเข้ารหัส base64 สตริงด้านบนคือ bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==
จากนั้นให้ส่งคำขอโทเค็นดังนี้
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg=='
2. Edge จะตรวจสอบความถูกต้องของ ข้อมูลเข้าสู่ระบบ
โปรดทราบว่าระบบส่งการเรียก API ไปยังปลายทาง /accesstoken ปลายทางนี้มีนโยบาย ซึ่งแนบมากับข้อมูลดังกล่าว ซึ่งจะตรวจสอบข้อมูลเข้าสู่ระบบของแอป กล่าวคือ นโยบายจะเปรียบเทียบ ซึ่งมีคีย์ที่ Apigee Edge สร้างขึ้นเมื่อลงทะเบียนแอป หากคุณต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับปลายทาง OAuth ใน Edge ได้ที่หัวข้อการกำหนดค่า OAuth ปลายทางและนโยบาย
3. Edge แสดงการตอบกลับ
หากข้อมูลเข้าสู่ระบบถูกต้อง Edge จะส่งคืนโทเค็นเพื่อการเข้าถึงให้กับไคลเอ็นต์ หากไม่ แสดงว่ามีข้อผิดพลาดคือ ส่งคืนแล้ว
4. ลูกค้าเรียกใช้ API ที่ป้องกันไว้
และเมื่อมีโทเค็นเพื่อการเข้าถึงที่ถูกต้องแล้ว ไคลเอ็นต์จะเรียกใช้ API ที่มีการป้องกันได้ ด้วยวิธีนี้ จะมีคำขอไปยัง Apigee Edge (พร็อกซี) และ Edge จะรับผิดชอบในการตรวจสอบ โทเค็นเพื่อการเข้าถึงก่อนที่จะส่งการเรียก API ไปยังเซิร์ฟเวอร์ทรัพยากรเป้าหมาย ตัวอย่างเช่น ดูการเรียกใช้ API ที่มีการป้องกันด้านล่าง
การกำหนดค่าขั้นตอนและนโยบาย
Edge จะดำเนินการกับคำขอโทเค็นเพื่อการเข้าถึงในฐานะเซิร์ฟเวอร์การให้สิทธิ์ ในฐานะนักพัฒนา API คุณต้องสร้างพร็อกซีที่มีขั้นตอนที่กำหนดเองเพื่อจัดการคำขอโทเค็น รวมทั้งเพิ่มและกำหนดค่า นโยบาย OAuthV2 ส่วนนี้จะอธิบายวิธีกำหนดค่าปลายทางดังกล่าว
การกำหนดค่าโฟลว์ที่กำหนดเอง
วิธีที่ง่ายที่สุดในการแสดงวิธีกำหนดค่าโฟลว์พร็อกซี API คือการแสดงขั้นตอน XML ของเรา ต่อไปนี้คือตัวอย่างขั้นตอนของพร็อกซี API ที่ออกแบบมาเพื่อประมวลผลคำขอโทเค็นเพื่อการเข้าถึง สำหรับ ตัวอย่างเช่น เมื่อมีคำขอและส่วนต่อท้ายเส้นทางตรงกับ /accesstoken จะทำให้ GetAccessToken นโยบายจะถูกเรียกใช้ โปรดดูการกำหนดค่า OAuth ปลายทางและนโยบายเพื่อดูภาพรวมคร่าวๆ ของขั้นตอนที่จำเป็นในการสร้างโฟลว์ที่กำหนดเอง แบบนี้
<Flows> <Flow name="GetAccessToken"> <!-- This policy flow is triggered when the URI path suffix matches /oauth/accesstoken. Publish this URL to app developers to use when obtaining an access token using an auth code --> <Condition>proxy.pathsuffix == "/oauth/accesstoken"</Condition> <Request> <Step><Name>GetAccessToken</Name></Step> </Request> </Flow> </Flows>
กำหนดค่าขั้นตอนด้วยนโยบาย
คุณต้องแนบนโยบายไปยังปลายทาง ดังนี้ โปรดดูการกำหนดค่า OAuth ปลายทางและนโยบายเพื่อดูภาพรวมคร่าวๆ ของขั้นตอนที่จำเป็นต้องเพิ่มนโยบาย OAuthV2 ไปยังปลายทางของพร็อกซี
รับโทเค็นเพื่อการเข้าถึง
นโยบายนี้แนบอยู่กับเส้นทาง /accesstoken
ซึ่งใช้ OAuthV2
นโยบายที่ระบุการดำเนินการ GenerateAccessToken ไว้
<OAuthV2 name="GetAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>3600000</ExpiresIn> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse/> </OAuthV2>
การเรียก API เพื่อรับโทเค็นเพื่อการเข้าถึงเป็นแบบ POST และมีส่วนหัวการให้สิทธิ์ที่มี client_id + client+secret ที่เข้ารหัส base64 และพารามิเตอร์การค้นหา grant_type=client_credentials. นอกจากนี้ ยังสามารถรวมพารามิเตอร์ที่ไม่บังคับสำหรับขอบเขตและสถานะได้ด้วย สำหรับ ตัวอย่าง:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'
การแนบนโยบายโทเค็นเพื่อการเข้าถึงสำหรับยืนยัน
หากต้องการปกป้อง API ของคุณด้วยความปลอดภัยของ OAuth 2.0 คุณต้องเพิ่มนโยบาย OAuthV2 ที่มีฟิลด์ การดำเนินการ VerifyAccessToken นโยบายนี้จะตรวจสอบว่าคำขอที่เข้ามามีโทเค็นเพื่อการเข้าถึงที่ถูกต้องหรือไม่ หากโทเค็นถูกต้อง Edge จะประมวลผลคำขอ หากพบว่าไม่ถูกต้อง Edge จะแสดงข้อผิดพลาด สำหรับ ขั้นตอนเบื้องต้น โปรดดูที่การยืนยัน โทเค็นเพื่อการเข้าถึง
<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken"> <DisplayName>VerifyAccessToken</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>VerifyAccessToken</Operation> <SupportedGrantTypes/> <GenerateResponse enabled="true"/> <Tokens/> </OAuthV2>
การเรียกใช้ API ที่มีการป้องกัน
หากต้องการเรียกใช้ API ที่ได้รับการปกป้องด้วยการรักษาความปลอดภัย OAuth 2.0 คุณต้องแสดงการเข้าถึงที่ถูกต้อง โทเค็น รูปแบบที่ถูกต้องคือการรวมโทเค็นในส่วนหัวการให้สิทธิ์ ดังนี้ หมายเหตุ โทเค็นเพื่อการเข้าถึงมีชื่อเรียกอีกอย่างว่า "โทเค็นสำหรับผู้ถือ"
$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \ http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282
โปรดดูเพิ่มเติมที่การส่งสิทธิ์การเข้าถึง โทเค็น
แหล่งข้อมูลเพิ่มเติม
- Apigee มีการฝึกอบรมออนไลน์สำหรับนักพัฒนา API ซึ่งรวมถึงหลักสูตรเกี่ยวกับ API ความปลอดภัย ซึ่งรวมถึง OAuth
- นโยบาย OAuthV2 -- มี ตัวอย่างมากมายที่แสดงวิธีส่งคำขอไปยังเซิร์ฟเวอร์การให้สิทธิ์และวิธีกำหนดค่า นโยบาย OAuthV2