ทำอะไรได้
JSON Web Token (JWT) คือสตริงกะทัดรัดที่มีสามส่วนคั่นด้วยจุด: header ที่ระบุอัลกอริทึมการเซ็น, payload ที่มี claim เกี่ยวกับผู้ใช้หรือเซสชัน และ signature JWT ใช้สำหรับเซสชันล็อกอิน, access token ของ OAuth 2.0 และ ID token ของ OpenID Connect
Header และ payload เป็นแค่การเข้ารหัสแบบ Base64URL ไม่ได้เข้ารหัสลับ เครื่องมือนี้ถอดรหัสออกมาเป็น JSON ที่จัดรูปแบบและอ่านง่าย และอธิบาย claim ด้านเวลามาตรฐาน คุณจึงเห็นได้ว่าโทเค็นเป็นของใคร มีสิทธิ์อะไรบ้าง และหมดอายุแล้วหรือยัง
วิธีใช้งาน
- วางโทเค็นลงใน โทเค็นที่เข้ารหัส คำนำหน้า
Bearerจากเฮดเดอร์ Authorization จะถูกลบออกให้อัตโนมัติ - อ่านป้ายสถานะ: ยังไม่หมดอายุ, หมดอายุแล้ว, ยังไม่มีผล หรือ ไม่มีวันหมดอายุ
- ตรวจเวลาที่ออก เวลาที่เริ่มมีผล และเวลาหมดอายุ ซึ่งแสดงเป็นเวลาท้องถิ่นของคุณและเป็นวินาทีแบบ Unix
- คัดลอก JSON ของ header หรือ payload ที่จัดรูปแบบแล้วด้วยปุ่ม คัดลอก
ตัวอย่าง
โทเค็นตัวอย่างมี header และ payload ดังนี้:
{ "alg": "HS256", "typ": "JWT" }
{
"sub": "1234567890",
"name": "张三 Jane Doe",
"roles": ["admin", "editor"],
"iat": 1700000000,
"exp": 4102444800
}
Claim ที่พบบ่อย
issผู้ออก,subsubject (มักเป็น ID ผู้ใช้),audผู้รับ (audience)iatเวลาที่ออก,nbfเวลาที่เริ่มมีผล,expเวลาหมดอายุ ทั้งหมดเป็นวินาทีแบบ UnixjtiID เฉพาะของโทเค็น มักใช้สำหรับเพิกถอนโทเค็น
คำถามที่พบบ่อย
› วางโทเค็นที่นี่ปลอดภัยหรือไม่?
โทเค็นถูกถอดรหัสในเบราว์เซอร์ของคุณและไม่ถูกส่งไปที่ใดเลย ถึงอย่างนั้น ให้ปฏิบัติต่อโทเค็นของ production เหมือนรหัสผ่าน ใครก็ตามที่มีโทเค็นที่ใช้ได้ก็ใช้มันได้จนกว่าจะหมดอายุ
› เครื่องมือนี้ตรวจสอบลายเซ็นหรือไม่?
ไม่ การตรวจสอบต้องใช้ secret key (HS256) หรือ public key ของผู้ออก (RS256, ES256) การถอดรหัสเป็นแค่การอ่านเนื้อหา ซึ่งไม่ได้เข้ารหัสลับ เพียงเข้ารหัสแบบ Base64URL อย่าเชื่อถือ claim จากโทเค็นที่เซิร์ฟเวอร์ของคุณยังไม่ได้ตรวจสอบ
› ทำไมขึ้นว่า "หมดอายุแล้ว"?
Claim exp เร็วกว่าเวลาปัจจุบันของอุปกรณ์คุณ ตรวจว่านาฬิกาตั้งไว้ถูกต้อง แล้วขอโทเค็นใหม่จากผู้ออก
› ถอดรหัสโทเค็นที่เข้ารหัสลับ (JWE) ได้หรือไม่?
ไม่ได้ JWE มีห้าส่วนและ payload ถูกเข้ารหัสลับ จึงอ่านไม่ได้หากไม่มีคีย์ถอดรหัส