ไทย

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

The Seven Registered JWT การอ้างสิทธิ์: iss, sub, aud, exp, nbf, iat และ jti

· พื้นหลัง

jwt ข้อมูลรูปแบบ การรับรองความถูกต้อง

ป้ายกำกับการอ้างสิทธิ์ JWT ที่ลงทะเบียนแล้วเจ็ดป้ายซึ่งจัดเรียงอยู่ภายในวัตถุเพย์โหลด
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

RFC 7519 สงวนชื่อการอ้างสิทธิ์เจ็ดชื่อที่มีความหมายและประเภทที่กำหนดไว้ โพสต์นี้จะอธิบายแต่ละประเภท StringOrURI และ NumericDate ที่อยู่เบื้องหลัง และวิธีการจดทะเบียน การเรียกร้องภาครัฐและเอกชนอยู่ร่วมกันอย่างไร

ฉันควรใช้ชื่อการอ้างสิทธิ์ใด — คำถามการออกแบบคำตอบของรีจิสทรี

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

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

iss และ sub จะแสดงเป็นสตริง การใช้งานนี้ไม่บังคับใช้ไวยากรณ์ StringOrURI

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

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

aud - ผู้รับที่ต้องการเป็นสตริงหรืออาร์เรย์

`aud` อธิบายผู้รับที่ต้องการและอาจแสดงเป็นค่าเดียวหรือรายการภายใต้กฎโทเค็นที่เกี่ยวข้อง ตารางการอ้างสิทธิ์ทั่วไปของ ToolAcre จะรักษาอาร์เรย์เป็นข้อความ JSON แต่ไม่ได้ตัดสินใจว่าบริการปัจจุบันจะปรากฏในนั้นหรือไม่

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

exp, nbf และ iat - การอ้างสิทธิ์ NumericDate ทั้งสามรายการซึ่งผูกโทเค็นไว้ทันเวลา

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

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

jti — ตัวระบุเฉพาะสำหรับการตรวจจับการเล่นซ้ำและรายการปฏิเสธ

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

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

คำอธิบายที่ลงทะเบียนและการอ้างสิทธิ์เฉพาะแอปพลิเคชันในจอแสดงผล ToolAcre

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

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

ตัวอย่างการทำงาน — การอ่านเพย์โหลดที่สมจริงและจำแนกการอ้างสิทธิ์แต่ละรายการ

พิจารณา `{"iss":"https://issuer.example","sub":"user-7","aud":["orders"],"exp":1717246800,"nbf":1717243100,"iat":1717243200,"jti":"demo-9","tenant":"north"}` ToolAcre อธิบายเจ็ดฟิลด์ที่ลงทะเบียนและป้ายกำกับ `tenant` เฉพาะแอปพลิเคชัน ขณะจัดรูปแบบตัวเลขสามครั้ง

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

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

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

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