คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
เมื่อใช้ประเภทการให้สิทธิ์ข้อมูลเข้าสู่ระบบของไคลเอ็นต์ แอปจะส่งข้อมูลเข้าสู่ระบบของตัวเอง (รหัสไคลเอ็นต์และ รหัสลับไคลเอ็นต์) ไปยังปลายทางใน 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 พร้อมค่าสำหรับรหัสไคลเอ็นต์ และรหัสลับไคลเอ็นต์ที่ได้รับจากแอปของนักพัฒนาซอฟต์แวร์ที่ลงทะเบียนไว้ นอกจากนี้ ต้องส่งพารามิเตอร์ grant_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'
หมายเหตุ: แม้ว่าคุณจะส่งค่ารหัสไคลเอ็นต์ และรหัสลับไคลเอ็นต์ เป็นพารามิเตอร์การค้นหาได้ตามที่แสดงด้านบน แต่แนวทางปฏิบัติแนะนำคือให้ส่งค่าดังกล่าวเป็นสตริงที่เข้ารหัส URL แบบ base64 ในส่วนหัวการให้สิทธิ์ หากต้องการทำเช่นนี้ คุณต้องใช้เครื่องมือหรือยูทิลิตีการเข้ารหัส base64 เพื่อเข้ารหัส ค่าทั้ง 2 ค่าพร้อมกันโดยใช้เครื่องหมายทวิภาคคั่น เช่น aBase64EncodeFunction(clientidvalue:clientsecret) ดังนั้น ตัวอย่างด้านบนจะเข้ารหัสได้ดัง นี้:
result = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // Note the colon separating the two values.
ผลลัพธ์ของการเข้ารหัส 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>กำหนดค่าโฟลว์ด้วยนโยบาย
คุณต้องแนบนโยบายกับปลายทางดังนี้ ดูภาพรวมคร่าวๆ เกี่ยวกับขั้นตอนที่จำเป็นในการเพิ่มนโยบาย OAuthV2 ไปยังปลายทางพร็อกซีได้ที่การกำหนดค่าปลายทางและนโยロジー OAuth
รับโทเค็นเพื่อการเข้าถึง
นโยบายนี้แนบอยู่กับเส้นทาง /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 คุณต้องแสดงโทเค็นเพื่อการเข้าถึงที่ถูกต้อง รูปแบบที่ถูกต้องคือการใส่โทเค็นในส่วนหัวการให้สิทธิ์ดังนี้ โปรดทราบ ว่าโทเค็นเพื่อการเข้าถึงจะเรียกว่า "โทเค็น Bearer" ด้วย
$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \ http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282
ดูเพิ่มเติมที่การส่งโทเค็นเพื่อการเข้าถึง
แหล่งข้อมูลเพิ่มเติม
- Apigee มีการฝึกอบรมออนไลน์สำหรับนักพัฒนา API ซึ่งรวมถึงหลักสูตรเกี่ยวกับ ความปลอดภัยของ APIที่รวม OAuth ไว้ด้วย
- นโยบาย OAuthV2 -- มี ตัวอย่างมากมายที่แสดงวิธีส่งคำขอไปยังเซิร์ฟเวอร์การให้สิทธิ์และวิธีกำหนดค่า นโยบาย OAuthV2