ไทย

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · ตัวถอดรหัส JWT

เหตุใดโทเค็นการเข้าถึงอายุสั้นจึงมีความสำคัญ: JWT ไม่สามารถเพิกถอนได้เมื่อออกแล้ว

· เหตุใดจึงสำคัญ

jwt การรับรองความถูกต้อง ความปลอดภัย

ไทม์ไลน์โทเค็นที่ลงนามข้างการตัดสินใจเพิกถอนจากภายนอก
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

ออกจากระบบที่ไม่ได้ออกจากระบบ — โทเค็นที่ยังคงทำงานต่อไปหลังจากเซสชันสิ้นสุดลง

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

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

การตรวจสอบไร้สถานะและราคา — การไม่มีรายการกลางหมายความว่าไม่มี kill switch ส่วนกลาง

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

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

การออกแบบการหมดอายุและรีเฟรชสามารถผูกความเสี่ยงไว้ได้ แต่พื้นที่เก็บข้อมูลนี้ไม่ได้กำหนดอายุการใช้งานมาตรฐาน

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

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

Denylists by jti — แนะนำสถานะใหม่สำหรับกรณีที่จำเป็นต้องเพิกถอนทันที

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

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

วิปัสสนาและการหมุนเวียนคีย์ - ถามผู้ออกหรือทำให้ทุกอย่างเป็นโมฆะในคราวเดียว

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

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

ตัวอย่างการทำงาน: คำนวณช่วงเวลาที่ประกาศโดยไม่ต้องตัดสินว่าสมเหตุสมผลหรือไม่

สำหรับตัวอย่างที่มีการควบคุม ให้ลบตัวเลข `iat` จาก `exp` เพื่อคำนวณช่วงเวลาที่อ้างสิทธิ์โดยเพย์โหลด หาก `iat` คือ 1,717,243,200 และ `exp` คือ 1,717,246,800 ความแตกต่างคือ 3,600 วินาที ToolAcre ยังแสดงแต่ละค่าเป็น ISO ทันที

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

สิ่งนี้ไม่ครอบคลุม — รีเฟรชการจัดเก็บและการหมุนเวียนโทเค็น ซึ่งเป็นปัญหาการออกแบบของตัวเอง

การจัดเก็บโทเค็นการรีเฟรช การหมุน และการตรวจจับการเล่นซ้ำเป็นหัวข้อการออกแบบที่แยกจากกัน โทเค็นการรีเฟรชอาจไม่ชัดเจน อาจมีการจัดการที่แตกต่างกัน และไม่ควรส่งไปยังทรัพยากร API เพียงเพราะว่าโทเค็นการเข้าถึงถูกปฏิเสธ ตัวถอดรหัสนี้ได้รับการออกแบบมาเป็นพิเศษโดยมีอินพุตคล้าย JWS สามส่วน

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

การหมดอายุเป็นปัจจัยหนึ่งในการตรวจสอบ สถานะการเพิกถอน และการออกแบบข้อมูลรับรอง

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

ใช้ ToolAcre เพื่อสังเกตค่าในโทเค็นที่ปลอดภัยเท่านั้น สามารถตอบได้ว่า "เพย์โหลดนี้เรียกร้องช่วงใด" ไม่สามารถตอบได้ว่า “ควรยอมรับคำขอนี้ตอนนี้หรือไม่” หรือ “เซสชันนี้ถูกเพิกถอนหรือไม่” คำถามเหล่านี้เป็นของบริการที่เชื่อถือได้