อะไรคือความแตกต่างระหว่าง JWTs และ Bearer Token?


121

ฉันกำลังเรียนรู้บางอย่างเกี่ยวกับ Authorization เช่น Basic, Digest, OAuth2.0, JWTs และ Bearer Token

ตอนนี้ฉันมีคำถาม

คุณทราบดีว่ามีการใช้ JWT เป็น Access_Token ในมาตรฐาน OAuth2.0 JWT ปรากฏที่ RFC 7519 และ Bearer Token อยู่ที่ RFC 6750

ตัวอย่างเช่นผู้ถือ:

Authorization: Bearer <token>

ฉันเคยส่งโทเค็นไปยังเซิร์ฟเวอร์โดย AJAX หรือเพิ่มโทเค็นลงในสตริงการสืบค้นของ url ฉันรู้ว่าโทเค็นสามารถส่งได้โดยเพิ่มลงในส่วนหัวของคำขอ นั่นหมายความว่าควรเพิ่มโทเค็นในส่วนหัว Authorization Bearer หรือไม่

คุณช่วยบอกความสัมพันธ์ระหว่าง JWTs และ Bearer Token ได้ไหม ขอบคุณมาก.

คำตอบ:


98

JWT เป็นมาตรฐานการเข้ารหัสสำหรับโทเค็นที่มีเพย์โหลดข้อมูล JSON ที่สามารถเซ็นชื่อและเข้ารหัสได้

JWT สามารถใช้กับสิ่งต่างๆได้หลายอย่างในบรรดาโทเค็นผู้ถือนั่นคือข้อมูลที่คุณสามารถนำเสนอต่อบริการบางอย่างที่คุณมี (คุณเป็น "ผู้ถือ") ให้คุณเข้าถึงบางสิ่งได้

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


แล้ววิธีการแยกวิเคราะห์โทเค็นในส่วนหัวการอนุญาตมี Bearer ฉันต้องใช้ String.slice () มีมิดเดิลแวร์ในการแยกวิเคราะห์หรือไม่
laoqiren

ฉันใช้ Node.js
laoqiren

ใช้auth-headerแพ็คเกจหากคุณต้องการตัวแยกวิเคราะห์ขั้นต่ำ
Demurgos

1
หรือใช้ String.slice () :)
Paul Siersma

152

คำตอบสั้น ๆ

JWTs เป็นวิธีที่สะดวกในการเข้ารหัสและการตรวจสอบ การเรียกร้อง

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

บริบท (เวลาเรื่อง)

ไม่กี่ปีที่ผ่านมาก่อนการปฏิวัติ JWT a <token>เป็นเพียงสตริงที่ไม่มีความหมายที่แท้จริงเช่น 2pWS6RQmdZpE0TQ93X จากนั้นโทเค็นนั้นจะถูกค้นหาในฐานข้อมูลซึ่งมีการอ้างสิทธิ์สำหรับโทเค็นนั้น ข้อเสียของวิธีนี้คือต้องมีการเข้าถึง DB (หรือแคช) ทุกครั้งที่ใช้โทเค็น

JWTs เข้ารหัสและการตรวจสอบ (ผ่านการลงนาม) ของตัวเองเรียกร้อง สิ่งนี้ช่วยให้ผู้คนสามารถออก JWT ที่มีอายุสั้นที่ไร้สัญชาติได้ (อ่าน: มีอยู่ในตัวไม่ต้องพึ่งพาใครอื่น) พวกเขาไม่จำเป็นต้องตี DB ซึ่งจะช่วยลดภาระ DB และทำให้สถาปัตยกรรมแอปพลิเคชันง่ายขึ้นเนื่องจากมีเพียงบริการที่ออก JWT เท่านั้นที่ต้องกังวลเกี่ยวกับการกดปุ่ม DB / persistence layer (ที่refresh_tokenคุณอาจเจอ)


ขอบคุณแล้ว Mac ในการอนุญาต Mac และ Bearer เหมือนกันหรือไม่
laoqiren

คำตอบที่ดีที่สุดจากที่อื่นเช่นdzone.com/articles/oauth-20-bearer-token-profile
rmharrison

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.