ฉันได้สร้างการรับรองความถูกต้องโดยใช้ JWT ในแอปพลิเคชัน Web API ของฉัน ฉันไม่สามารถเข้าใจความแตกต่างระหว่าง
- โทเค็นพื้นฐาน
- ถือโทเค็น
ใครช่วยฉันหน่อยได้ไหม
ฉันได้สร้างการรับรองความถูกต้องโดยใช้ JWT ในแอปพลิเคชัน Web API ของฉัน ฉันไม่สามารถเข้าใจความแตกต่างระหว่าง
ใครช่วยฉันหน่อยได้ไหม
คำตอบ:
โครงร่างการพิสูจน์ตัวตนพื้นฐานและไดเจสต์มีไว้สำหรับการพิสูจน์ตัวตนโดยใช้ชื่อผู้ใช้และความลับ (ดูRFC7616และRFC7617 )
โครงการรับรองความถูกต้องถือได้ทุ่มเทให้กับการตรวจสอบโดยใช้โทเค็นและมีการอธิบายโดยRFC6750 แม้ว่าโครงร่างนี้จะมาจากข้อกำหนด OAuth2 แต่คุณยังสามารถใช้มันในบริบทอื่น ๆ ที่มีการแลกเปลี่ยนโทเค็นระหว่างไคลเอนต์และเซิร์ฟเวอร์
เกี่ยวกับการพิสูจน์ตัวตน JWT และเนื่องจากเป็นโทเค็นทางเลือกที่ดีที่สุดคือรูปแบบการพิสูจน์ตัวตนของผู้ถือ อย่างไรก็ตามไม่มีอะไรป้องกันไม่ให้คุณใช้โครงร่างแบบกำหนดเองที่เหมาะกับความต้องการของคุณ
การพิสูจน์ตัวตนพื้นฐานส่งข้อมูลรับรองเป็นคู่ ID ผู้ใช้ / รหัสผ่านที่เข้ารหัสโดยใช้ base64 ไคลเอนต์ส่งคำขอ HTTP พร้อมกับAuthorization
ส่วนหัวที่มีคำBasic
ว่าตามด้วยช่องว่างและbase64-encoded
ชื่อผู้ใช้สตริง: รหัสผ่าน
การอนุญาต: พื้นฐาน ZGVtbzpwQDU1dzByZA ==
หมายเหตุ: สำหรับการตรวจสอบความถูกต้องพื้นฐานเนื่องจาก ID ผู้ใช้และรหัสผ่านถูกส่งผ่านเครือข่ายเป็นข้อความที่ชัดเจน (เป็นการเข้ารหัส base64 แต่ base64 เป็นการเข้ารหัสแบบย้อนกลับได้) รูปแบบการตรวจสอบสิทธิ์พื้นฐานจึงไม่ปลอดภัย ควรใช้ HTTPS / TLS ร่วมกับการพิสูจน์ตัวตนพื้นฐาน
การพิสูจน์ตัวตนของผู้ถือ (เรียกอีกอย่างว่าการพิสูจน์ตัวตนโทเค็น ) มีโทเค็นความปลอดภัยที่เรียกว่าโทเค็นผู้ถือ ชื่อ“ การพิสูจน์ตัวตนของผู้ถือ” สามารถเข้าใจได้ว่า“ให้การเข้าถึงแก่ผู้ถือโทเค็นนี้” โทเค็นผู้ถือเป็นสตริงที่เป็นความลับซึ่งโดยปกติเซิร์ฟเวอร์จะสร้างขึ้นเพื่อตอบสนองต่อคำขอเข้าสู่ระบบ ไคลเอนต์ต้องส่งโทเค็นนี้ในส่วนหัวการอนุญาตเมื่อทำการร้องขอไปยังทรัพยากรที่มีการป้องกัน:
การอนุญาต: ผู้ถือ <token>
หมายเหตุ:เช่นเดียวกับการพิสูจน์ตัวตนพื้นฐานควรใช้การพิสูจน์ตัวตนของผู้ถือผ่าน HTTPS (SSL)เท่านั้น