วิธีใช้งาน
- วาง Token — มี หรือไม่มี คำนำหน้า «Bearer » ก็ได้ ส่วนทั้งสามจะแสดงด้วยสีต่างกัน
- อ่าน Header และ Payload ที่ถอดรหัสแล้ว Claim ของ iat, nbf และ exp จะแสดงเป็นวันที่พร้อมเวลาสัมพัทธ์
- ในการยืนยันลายเซ็น ป้อน Shared Secret สำหรับ HS256/384/512 หรือวาง Public Key (รูปแบบ PEM หรือ JWK) สำหรับ Token ของ RS, PS, ES และ EdDSA
- คัดลอก JSON ที่ถอดรหัสแล้วหากต้องการใช้ที่อื่น
คำอธิบายตัวเลือก
- Header
- ข้อมูลเกี่ยวกับ Token โดยปกติจะมี alg (อัลกอริทึมลงนาม) และ typ ช่อง kid บอกให้ทราบว่า Key ใดลงนาม
- Payload
- Claim ที่ลงทะเบียน ได้แก่ sub (subject) iss (issuer) aud (audience) iat (issued at) nbf (not before) และ exp (expiry) เวลาทั้งหมดเป็น Unix seconds
- Signature
- พิสูจน์ว่า Header และ Payload ไม่ถูกแก้ไข การยืนยันต้อง Secret (HMAC) หรือ Public Key ของผู้ออก (RSA, ECDSA, EdDSA)
- Secret is Base64
- บริการบางรายเก็บ HMAC Secret เป็น Base64 Encoded ทำเครื่องหมายหากคุณมี Secret ในรูปแบบที่เข้ารหัส
Claim ทั่วไป
| Claim | ความหมาย | ตัวอย่าง |
|---|---|---|
sub |
หัวข้อที่ Token เกี่ยวกับ (รหัสผู้ใช้) | "1234567890" |
iss |
ใครเป็นผู้ออก | "https://accounts.example.com" |
aud |
ใครที่ Token นี้มีไว้สำหรับ | "my-api" |
exp |
เวลาหมดอายุ Unix seconds | 1790427600 |
iat |
ออกเมื่อ Unix seconds | 1790424000 |
nbf |
ใช้ได้ตั้งแต่ Unix seconds | 1790424000 |
jti |
รหัส Token ที่ไม่ซ้ำกัน ใช้เพื่อป้องกันการเล่นซ้ำ | "a1b2c3" |
ตัวอย่าง
Token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ถูกถอดรหัสเป็น Header {"alg":"HS256","typ":"JWT"} และ Payload ที่มี sub, name และ iat (18 มกราคม 2561) ด้วย Secret your-256-bit-secret ลายเซ็นจึงตรวจสอบได้
คำถามที่พบบ่อย
ปลอดภัยไหมที่จะวาง JWT จากระบบ Production ที่นี่?
Token ถูกถอดรหัสโดย JavaScript ในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดหรือบันทึก แต่ให้ถือว่า Access Token เป็นรหัสผ่าน ใครก็ตามที่มี Token ที่ถูกต้องจะสามารถใช้ได้จนกว่าจะหมดอายุ
การถอดรหัส JWT พิสูจน์ได้ว่าแท้จริงหรือไม่?
ไม่ได้ Header และ Payload เป็นเพียง Base64URL Encoding เท่านั้น ใครก็ตามสามารถอ่านหรือปลอมแปลงได้ เฉพาะการยืนยันลายเซ็นที่สำเร็จด้วย Key ที่ถูกต้องเท่านั้นที่พิสูจน์ว่า Token ออกจากฝ่ายที่คาดหวัง
ทำไมการยืนยันจึงล้มเหลวแม้ว่า Secret ถูกต้อง?
ตรวจสอบว่า Secret เป็น Base64 Encoded หรือไม่ มี Space หรือ Newline ท้ายหรือไม่ และ Algorithm ใน Header ตรงกับที่ผู้ออกใช้หรือไม่ การเปลี่ยนแปลง Token แม้แต่ตัวเดียวก็ทำลายลายเซ็น
«alg none» หมายความว่าอะไร?
Token อ้างว่าไม่ลงนาม เซิร์ฟเวอร์ต้องปฏิเสธ Token เหล่านี้ เว้นแต่พวกเขาคาดหวังอย่างชัดเจน การยอมรับพวกมันทำให้เกิดการข้ามผ่าน Authentication ที่แท้จริง
ฉันจะได้ Public Key สำหรับ RS256 Token ได้อย่างไร?
ผู้ให้บริการ Identity จะเผยแพร่ Key ของพวกเขาเป็น JWKS โดยปกติที่ /.well-known/jwks.json ค้นหา Key ที่มี kid ตรงกับ Token Header และวางเป็น JWK
ความเป็นส่วนตัว
เครื่องมือนี้ทำงานในเบราว์เซอร์ของคุณทั้งหมด ไฟล์และข้อความของคุณได้รับการประมวลผลบนอุปกรณ์ของคุณ และจะไม่ถูกอัปโหลดไปยังเซิร์ฟเวอร์ของเรา