Web API Authentication Basic เทียบกับ Bearer


93

ฉันได้สร้างการรับรองความถูกต้องโดยใช้ JWT ในแอปพลิเคชัน Web API ของฉัน ฉันไม่สามารถเข้าใจความแตกต่างระหว่าง

  1. โทเค็นพื้นฐาน
  2. ถือโทเค็น

ใครช่วยฉันหน่อยได้ไหม

คำตอบ:


119

โครงร่างการพิสูจน์ตัวตนพื้นฐานและไดเจสต์มีไว้สำหรับการพิสูจน์ตัวตนโดยใช้ชื่อผู้ใช้และความลับ (ดูRFC7616และRFC7617 )

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

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


41

การพิสูจน์ตัวตนพื้นฐานส่งข้อมูลรับรองเป็นคู่ ID ผู้ใช้ / รหัสผ่านที่เข้ารหัสโดยใช้ base64 ไคลเอนต์ส่งคำขอ HTTP พร้อมกับAuthorizationส่วนหัวที่มีคำBasicว่าตามด้วยช่องว่างและbase64-encodedชื่อผู้ใช้สตริง: รหัสผ่าน

การอนุญาต: พื้นฐาน ZGVtbzpwQDU1dzByZA ==

ป้อนคำอธิบายภาพที่นี่ หมายเหตุ: สำหรับการตรวจสอบความถูกต้องพื้นฐานเนื่องจาก ID ผู้ใช้และรหัสผ่านถูกส่งผ่านเครือข่ายเป็นข้อความที่ชัดเจน (เป็นการเข้ารหัส base64 แต่ base64 เป็นการเข้ารหัสแบบย้อนกลับได้) รูปแบบการตรวจสอบสิทธิ์พื้นฐานจึงไม่ปลอดภัย ควรใช้ HTTPS / TLS ร่วมกับการพิสูจน์ตัวตนพื้นฐาน


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

การอนุญาต: ผู้ถือ <token>

ป้อนคำอธิบายภาพที่นี่

หมายเหตุ:เช่นเดียวกับการพิสูจน์ตัวตนพื้นฐานควรใช้การพิสูจน์ตัวตนของผู้ถือผ่าน HTTPS (SSL)เท่านั้น

สำหรับข้อมูลเพิ่มเติมlink1 , link2


ดังนั้นทั้งสองอย่างนี้เป็นการอนุญาตและไม่ใช่การอนุญาตจริงๆ ในอันแรกคุณส่งสตริงที่เข้ารหัส base64 และได้รับอนุญาตในขณะที่หลังจากนั้นคุณจะได้รับโทเค็นกลับมาและใช้เพื่อเข้าถึงทรัพยากร
Brain storm

ข้อดีของการส่งโทเค็นผ่านชื่อผู้ใช้ / รหัสผ่านคืออะไร?
Muhammad Umer

@MuhammadUmer คุณสามารถเพิกถอนโทเค็นและให้สิทธิ์การเข้าถึงแบบละเอียด (เช่นการเข้าถึงแบบอ่านเท่านั้น)
Mihai

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