ฉันไม่รู้ว่าฉันเพิ่งมีจุดบอดหรืออะไร แต่ฉันอ่าน OAuth 2 สเป็คหลาย ๆ ครั้งและอ่านคลังเก็บรายชื่อผู้รับจดหมายแล้วและฉันยังไม่พบคำอธิบายที่ดีว่าทำไม Implicit Grant โฟลว์เพื่อรับโทเค็นการเข้าถึงได้รับการพัฒนา เมื่อเทียบกับการให้สิทธิ์รหัสอนุญาตดูเหมือนว่าจะยอมแพ้ในการตรวจสอบสิทธิ์ไคลเอ็นต์โดยไม่มีเหตุผลที่น่าสนใจ "วิธีนี้ได้รับการปรับให้เหมาะสมสำหรับลูกค้าที่ใช้งานในเบราว์เซอร์โดยใช้ภาษาสคริปต์" (เพื่ออ้างอิงข้อกำหนด)
การไหลทั้งสองเริ่มเหมือนกัน (ที่มา: http://tools.ietf.org/html/draft-ietf-oauth-v2-22 ):
- ไคลเอ็นต์เริ่มต้นโฟลว์โดยสั่งให้เอเจนต์ผู้ใช้ของเจ้าของทรัพยากรไปยังจุดสิ้นสุดการให้สิทธิ์
- เซิร์ฟเวอร์การอนุญาตรับรองความถูกต้องของเจ้าของทรัพยากร (ผ่านตัวแทนผู้ใช้) และสร้างว่าเจ้าของทรัพยากรมอบหรือปฏิเสธคำขอการเข้าถึงของลูกค้าหรือไม่
- สมมติว่าเจ้าของทรัพยากรให้สิทธิ์การเข้าถึงเซิร์ฟเวอร์การอนุญาตเปลี่ยนเส้นทางผู้ใช้ตัวแทนกลับไปยังลูกค้าโดยใช้การเปลี่ยนเส้นทาง URI ที่ให้ไว้ก่อนหน้านี้ (ในคำขอหรือระหว่างการลงทะเบียนลูกค้า)
- URI การเปลี่ยนเส้นทางมีรหัสการอนุญาต (โฟลว์รหัสการอนุญาต)
- URI การเปลี่ยนเส้นทางรวมถึงโทเค็นการเข้าถึงในส่วนของ URI (โฟลว์โดยนัย)
นี่คือที่ที่กระแสแยก ในทั้งสองกรณี URI การเปลี่ยนเส้นทาง ณ จุดนี้คือจุดปลายทางที่โฮสต์โดยลูกค้า:
- ในโฟลว์การอนุญาตเมื่อเอเจนต์ผู้ใช้พบจุดสิ้นสุดนั้นด้วยโค้ดการอนุญาตใน URI โค้ดที่จุดปลายนั้นจะแลกเปลี่ยนโค้ดการอนุญาตพร้อมกับหนังสือรับรองไคลเอ็นต์สำหรับโทเค็นการเข้าถึงซึ่งสามารถใช้งานได้ตามต้องการ ตัวอย่างเช่นสามารถเขียนลงในหน้าเว็บที่สคริปต์บนหน้าสามารถเข้าถึงได้
- โฟลว์โดยปริยายจะข้ามขั้นตอนการพิสูจน์ตัวตนลูกค้าทั้งหมดและเพียงโหลดหน้าเว็บด้วยสคริปต์ลูกค้า มีเคล็ดลับน่ารักอยู่ที่นี่ด้วยส่วน URL ที่ทำให้ไม่สามารถส่งโทเค็นการเข้าถึงได้มากเกินไป แต่ผลลัพธ์สุดท้ายก็เหมือนกัน: ไซต์ที่โฮสต์โดยไคลเอ็นต์ให้บริการหน้าเว็บที่มีสคริปต์บางตัวที่สามารถเข้าถึงโทเค็นการเข้าถึงได้ .
ดังนั้นคำถามของฉัน: สิ่งที่ได้รับที่นี่โดยข้ามขั้นตอนการตรวจสอบลูกค้า?