TL; DR
หากคุณมีสถานการณ์ที่ง่ายมากเช่นแอปพลิเคชันไคลเอนต์เดียว API เดียวก็อาจไม่ได้ผลในการใช้งาน OAuth 2.0 ในทางกลับกันไคลเอนต์จำนวนมากที่แตกต่างกัน ฯลฯ ) จากนั้นการผสานกับกฎ OAuth 2.0 อาจทำให้จัดการได้ง่ายกว่าการพยายามพลิกระบบของคุณเอง
ตามที่ระบุไว้ในคำตอบอื่น JWT ( Learn JSON Web Tokens ) เป็นเพียงรูปแบบโทเค็นมันกำหนดกลไกขนาดกะทัดรัดและมีอยู่ในตัวเองสำหรับการส่งข้อมูลระหว่างบุคคลในวิธีที่สามารถตรวจสอบและเชื่อถือได้เพราะมีการเซ็นชื่อแบบดิจิทัล นอกจากนี้กฎการเข้ารหัสของ JWT ยังทำให้โทเค็นเหล่านี้ใช้งานได้ง่ายในบริบทของ HTTP
การมีอยู่ในตัวเอง (โทเค็นจริงมีข้อมูลเกี่ยวกับเรื่องที่กำหนด) พวกเขายังเป็นตัวเลือกที่ดีสำหรับการใช้กลไกการพิสูจน์ตัวตนแบบไร้รัฐ (aka Look mum, no session! ) เมื่อไปตามเส้นทางนี้และสิ่งเดียวที่ปาร์ตี้ต้องแสดงเพื่อให้ได้รับอนุญาตให้เข้าถึงทรัพยากรที่มีการป้องกันคือโทเค็นเองโทเค็นที่สงสัยสามารถเรียกได้ว่าโทเค็นผู้ถือ
ในทางปฏิบัติสิ่งที่คุณทำอยู่แล้วสามารถจัดประเภทตามโทเค็นผู้ถือ อย่างไรก็ตามโปรดพิจารณาว่าคุณไม่ได้ใช้โทเค็นผู้ถือตามที่ระบุไว้ในข้อกำหนดที่เกี่ยวข้องของ OAuth 2.0 (ดูRFC 6750 ) นั่นหมายความว่าต้องอาศัยAuthorization
ส่วนหัว HTTP และใช้Bearer
รูปแบบการตรวจสอบสิทธิ์
เกี่ยวกับการใช้ JWT เพื่อป้องกัน CSRF โดยไม่ทราบรายละเอียดที่แน่นอนมันเป็นการยากที่จะยืนยันความถูกต้องของการปฏิบัตินั้น แต่ตามจริงแล้วดูเหมือนจะไม่ถูกต้องและ / หรือคุ้มค่า บทความต่อไปนี้ ( คุกกี้ vs โทเค็น: คู่มือสรุป ) อาจเป็นประโยชน์สำหรับการอ่านในเรื่องนี้โดยเฉพาะอย่างยิ่งส่วนการป้องกัน XSS และ XSRF
หนึ่งชิ้นสุดท้ายของคำแนะนำถึงแม้คุณจะไม่จำเป็นต้องไป OAuth เต็ม 2.0 ผมจะขอแนะนำในการส่งผ่านการเข้าถึงของคุณโทเค็นภายในAuthorization
หัวแทนจะมีส่วนหัวที่กำหนดเอง หากพวกเขาเป็นโทเค็นผู้ถือจริงๆทำตามกฎของ RFC 6750 ถ้าไม่คุณสามารถสร้างรูปแบบการรับรองความถูกต้องที่กำหนดเองและยังคงใช้ส่วนหัวนั้น
ส่วนหัวการอนุญาตได้รับการยอมรับและได้รับการดูแลเป็นพิเศษโดยพร็อกซี HTTP และเซิร์ฟเวอร์ ดังนั้นการใช้ส่วนหัวดังกล่าวในการส่งโทเค็นการเข้าถึงไปยังเซิร์ฟเวอร์ทรัพยากรจะช่วยลดโอกาสในการรั่วไหลหรือการจัดเก็บที่ไม่ได้ตั้งใจของการร้องขอที่รับรองความถูกต้องโดยทั่วไปและโดยเฉพาะอย่างยิ่งส่วนหัวการอนุญาต
(ที่มา: RFC 6819, ส่วน 5.4.1 )