OAuth2 โฟลว์ - เซิร์ฟเวอร์ตรวจสอบความถูกต้องกับเซิร์ฟเวอร์ Auth หรือไม่


10

ฉันอ่านมากเกี่ยวกับ OAuth2 พยายามที่จะเอาหัวไปรอบ ๆ แต่ฉันก็ยังสับสนอยู่ดี

ฉันเข้าใจว่าลูกค้าอนุญาตกับผู้ให้บริการ OAuth (Google เป็นต้น) และอนุญาตให้เซิร์ฟเวอร์ทรัพยากรสามารถเข้าถึงข้อมูลโปรไฟล์ของผู้ใช้ได้ จากนั้นไคลเอ็นต์สามารถส่งโทเค็นการเข้าถึงไปยังเซิร์ฟเวอร์ทรัพยากรและได้รับกลับทรัพยากร

แต่สิ่งที่ดูเหมือนจะไม่ครอบคลุมในเอกสารใด ๆ คือสิ่งที่เกิดขึ้นเมื่อแอปไคลเอนต์ถามเซิร์ฟเวอร์ทรัพยากรเพื่อหาทรัพยากรและส่งผ่านโทเค็นการเข้าถึง ทุกสิ่งที่ฉันได้อ่านมาจนถึงตอนนี้ระบุว่าเซิร์ฟเวอร์ทรัพยากรเพิ่งตอบสนองกับทรัพยากรที่ร้องขอ

แต่ดูเหมือนว่าจะเป็นช่องโหว่ขนาดใหญ่เซิร์ฟเวอร์ทรัพยากรจะต้องตรวจสอบโทเค็นการเข้าถึงมิฉะนั้นฉันสามารถปลอมคำขอเก่า ๆ และส่งโทเค็นเก่าที่ถูกขโมยปลอมหรือสุ่มและมันก็จะยอมรับมัน

ทุกคนสามารถชี้ให้ฉันได้อย่างง่ายดายที่จะทำตามคำอธิบายของ OAuth2 เพราะจนถึงตอนที่ฉันได้อ่านรู้สึกไม่สมบูรณ์

คำตอบ:


8

พบมัน ฝังไว้ในสเป็ค พวกเขากล่าวว่าเซิร์ฟเวอร์ทรัพยากรควรตรวจสอบโทเค็นการเข้าถึงกับเซิร์ฟเวอร์รับรองความถูกต้อง แต่อยู่นอกขอบเขตของเอกสาร น่าเสียดายที่ฉันคิดว่าการตรวจสอบโทเค็นเป็นส่วนสำคัญ


1
เกี่ยวกับส่วนสำคัญอาจคุ้มค่าที่จะอ่านโพสต์บล็อกนี้สำหรับพื้นหลังบางอย่างในลำดับความสำคัญของ OAuth2
Lars Viklund

1
ขอบคุณที่อ่านที่น่าสนใจ ความต้องการของฉันค่อนข้างง่ายที่ฉันต้องการอนุญาตให้แอป iOS รับรองความถูกต้องกับ google, twitter, facebook ฯลฯ ผ่านการอนุญาตบางรูปแบบไปยังเซิร์ฟเวอร์ของฉันและให้เซิร์ฟเวอร์ของฉันตรวจสอบและเปิดใช้งานการเข้าถึงทรัพยากร ปัญหาได้พิสูจน์แล้วว่าซับซ้อนกว่าที่ฉันคาดไว้เนื่องจากความซับซ้อนของความเข้าใจในการทำงานและสิ่งที่ฉันต้องทำที่ไหน
drekka

ภาคผนวก A: "เพื่อตรวจสอบความถูกต้องของลายเซ็นในคำขอทรัพยากรที่ได้รับการป้องกันสามารถส่งตัวบ่งชี้โทเค็นไปยังจุดสิ้นสุดการวิพากษ์ของเซิร์ฟเวอร์การอนุญาตเพื่อรับข้อมูลสำคัญที่จำเป็นสำหรับโทเค็นนั้น ขอบเขตของข้อกำหนดนี้และจะถูกกำหนดในส่วนขยาย [... ] "
JulienD

2

โดยทั่วไปการตรวจสอบ Token นั้นใช้งานได้ 1 ใน 2 วิธี

1) โทเค็นจะถูกเซ็นชื่อแบบเข้ารหัสโดยใช้คีย์ที่แบ่งปันล่วงหน้า สิ่งนี้มีความชัดเจนสั้น ๆ สำหรับใช้ในระบบกระจายและแพร่กระจาย

2) เซิร์ฟเวอร์การอนุญาต (AS) ให้จุดสิ้นสุดสำหรับการตรวจสอบความถูกต้องของโทเค็นหรือการวิปัสสนา วิธีนี้เป็นมาตรฐานใน IETF RFC 7662 ในเดือนตุลาคม 2558 ดู: https://tools.ietf.org/html/rfc7662

คำถาม / คำตอบสำหรับ Stack Overflow นี้มีตัวอย่างจาก Google และ Github: /programming/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server


0

คุณอ่านข้อกำหนดสำหรับวิธีการตรวจสอบโทเค็น:

https://tools.ietf.org/html/rfc7662

หวังว่าสิ่งนี้จะช่วยได้โปรดทำเครื่องหมายคำตอบถ้ามันตอบคำถาม / ปัญหาของคุณ


4
ยินดีต้อนรับสู่วิศวกรรมซอฟต์แวร์ ในรูปแบบปัจจุบัน, คำตอบนี้ไม่เป็นไปตามหลักเกณฑ์คุณภาพของเรา เราคาดหวังว่าคำตอบควรตั้งอยู่บนตัวของมันเอง - ผู้อ่านควรติดตามลิงก์ภายนอกเท่านั้นเพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้นหรือเพื่อยืนยันแหล่งที่มาและควรอ้างอิงเนื้อหาที่เกี่ยวข้องที่นี่
Thomas Owens
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.