เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · ตัวถอดรหัส JWT
The Seven Registered JWT การอ้างสิทธิ์: iss, sub, aud, exp, nbf, iat และ jti
· พื้นหลัง
jwt ข้อมูลรูปแบบ การรับรองความถูกต้อง
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 สามารถแสดงว่าโทเค็นปลอดภัยมีชื่อใดบ้าง และวิธีแสดงการอ้างสิทธิ์ที่เป็นตัวเลข ไม่สามารถรับรองมูลค่าใดๆ ได้ ผลลัพธ์ที่เป็นประโยชน์ของการถอดรหัสคือรายการที่ต้องตรวจสอบ ผลลัพธ์ที่เป็นประโยชน์ของการตรวจสอบและนโยบายคือการตัดสินใจ และสิ่งเหล่านั้นยังคงแยกจากกัน