Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

นี่คือโพสต์ที่แปลด้วย AI

Seize the day

JWT (JSON Web Token) คืออะไร?

เลือกภาษา

  • ไทย
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

สรุปโดย AI ของ durumis

  • JSON Web Token (JWT) เป็นโทเค็นที่เข้ารหัสสำหรับการส่งข้อมูลอย่างปลอดภัย
  • JWT ประกอบด้วยส่วนหัว เพย์โหลด และลายเซ็น โดยลายเซ็นช่วยรับประกันความสมบูรณ์ของข้อมูล
  • JWT ไม่จำเป็นต้องจัดการข้อมูลสถานะแยกต่างหาก ทำให้มีขนาดใหญ่ในสภาพแวดล้อมแบบกระจาย

JWT คืออะไร?

JSON Web Token(JWT) เป็นวิธีการหนึ่งในการส่งข้อมูลอย่างปลอดภัยในรูปแบบ JSON object ซึ่งเป็นมาตรฐานที่เปิดเผยต่อสาธารณะ (RFC 7519) ดังนั้น จึงเป็นการนำข้อมูลที่จำเป็นมาใส่ใน token และเข้ารหัสเพื่อใช้งาน


JWT ถูกเน้นว่าเป็นโทเค็นที่ลงนาม (signed token) เมื่อใช้คีย์สาธารณะ/ส่วนตัวเป็นคู่ ในการลงนาม การลงนามนี้จะรับประกันได้ว่ามีเพียงบุคคลที่ถือครองคีย์ส่วนตัวเท่านั้นที่สามารถลงนามในโทเค็นนั้นได้ กล่าวคือ เซิร์ฟเวอร์ที่ถือครองคีย์จะรู้ว่าโทเค็นนี้ถูกต้องหรือไม่


โครงสร้าง JWT

JWT ประกอบด้วยส่วนหัว (Header) เเพย์โหลด (Payload) และลายเซ็น (Signature)

แต่ละส่วนจะถูกเข้ารหัสโดย Base64 และใช้จุด (.) เป็นตัวคั่น

ส่วนหัว

{
    "alg": "HS256",
    "typ": "JWT"

ส่วนหัวมีข้อมูลสำคัญสองอย่าง ได้แก่ ประเภทของโทเค็น (typ) และอัลกอริธึมลายเซ็น (alg) ที่ใช้ อัลกอริธึมลายเซ็นจะถูกใช้ในการสร้างและตรวจสอบลายเซ็น

typ ถูกกำหนดให้เป็น "JWT" และ alg จะเขียนเป็น HMAC, SHA256 เป็นต้น ตามตัวอย่างข้างต้น หมายถึงการใช้ อัลกอริธึม HS256 โดยใช้คีย์ส่วนตัว

เพย์โหลด

{
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022


เพย์โหลดประกอบด้วย Claim ที่ต้องการส่งผ่านไปยังโทเค็น บันทึกข้อมูลประจำตัวของผู้ใช้หรือ property เกี่ยวกับโทเค็นในรูปแบบ key-value กล่าวคือ นักพัฒนาสามารถใส่ได้ตามต้องการ!

ตามข้อกำหนดมาตรฐาน ชื่อ key จะถูกกำหนดให้สั้นและกระชับใน 3 ตัวอักษร

registered claim มีดังนี้

  • iss (Issuer) : ผู้เผยแพร่โทเค็น (ประกอบด้วยข้อมูลประจำตัวที่ไม่ซ้ำกันของผู้เผยแพร่โทเค็น)
  • sub (Subject) : ตัวแทนที่โทเค็นมีไว้สำหรับ
  • aud (Audience) : ผู้รับโทเค็น
  • exp (Expiration Time) : เวลาหมดอายุของโทเค็น (หลังจากเวลาที่กำหนด โทเค็นจะไม่ถูกต้องอีกต่อไป)
  • nbf (Not Before) : วันที่โทเค็นมีผลบังคับใช้ (โทเค็นจะไม่สามารถใช้ได้ก่อนเวลาที่กำหนด)
  • iat (Issued At) : เวลาที่ออกโทเค็น
  • jti (JWT Id) : ตัวระบุโทเค็น JWT (ใช้เพื่อแยกแยะผู้เผยแพร่หลายราย)


นอกเหนือจากค่าเหล่านี้ หากมีค่าอื่น ๆ ที่จำเป็น คุณสามารถเพิ่มค่าเหล่านั้นได้

อย่างไรก็ตาม เพย์โหลดไม่ได้ถูกเข้ารหัส แต่เป็นค่าที่ลงนาม ดังนั้นจึงไม่ควรเก็บข้อมูลที่ละเอียดอ่อน

สามารถถอดรหัสและดูได้โดยทุกคนjwt.io สามารถตรวจสอบได้ทันทีที่เว็บไซต์

ลายเซ็น

HMACSHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    your-256-bit-secret

ส่วนหัวและเพย์โหลดจะถูกเข้ารหัสโดย base64 เชื่อมต่อด้วยจุด (.) และใช้คีย์ส่วนตัว ของคุณ -256 บิต - secret ของเซิร์ฟเวอร์เพื่อลงนาม

ดังนั้นลายเซ็น (Signature) สามารถถอดรหัสได้โดยเซิร์ฟเวอร์ที่ออกโทเค็นเท่านั้นโดยใช้คีย์ส่วนตัว

เมื่อพิจารณาการถอดรหัส คุณสามารถตรวจสอบได้โดยการถอดรหัสลายเซ็นด้วยคีย์ส่วนตัวจากนั้นตรวจสอบว่า base64UrlEncode(header) ตรงกับค่า heaer ของ JWT หรือไม่ และ base64UrlEncode(payload) ตรงกับค่าหรือไม่

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



JWT มีข้อมูลทั้งหมดที่จำเป็นในตัวของมันเอง ซึ่งเรียกว่า Self-contained ซึ่งสร้างขึ้นเพื่อแก้ไขข้อบกพร่องของเซสชันที่ต้องมีสถานะ JWT ไม่จำเป็นต้องใช้ที่เก็บข้อมูลแยกต่างหาก

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

ได้รับการปกป้องโดยลายเซ็น ดิจิทัล ลายเซ็นช่วยให้สามารถรับประกันความสมบูรณ์ของข้อมูลได้

nofunfromdev
Seize the day
Seize the day
nofunfromdev
ปล่อยให้เราค้นหาสภาพอากาศของวันนี้ ปล่อยให้เราค้นหาสภาพอากาศของวันนี้ สภาพอากาศในวันนี้ค่อนข้างแจ่มใส
제이온
제이온
제이온
제이온

27 เมษายน 2567

Java Collections Framework (JCF) คืออะไร - นิยามและลักษณะของ JCF (JAVA) Java Collections Framework (JCF) เป็นชุดคลาสใน Java ที่ให้วิธีการมาตรฐานในการจัดการข้อมูลจำนวนมากอย่างมีประสิทธิภาพ JCF นำโครงสร้างข้อมูลและอัลกอริธึมในการจัดเก็บข้อมูลมาใช้ในรูปแบบคลาสเพื่อเพิ่มความสามารถในการนำรหัสกลับมาใช้ใหม่ ปรับปรุงประสิทธิภาพ และคว
제이온
제이온
제이온
제이온

27 เมษายน 2567

ใช้ใบรับรองทางการเงินฟรีแทนใบรับรองการรับรองร่วมกันแบบชำระเงิน! เรานำเสนอใบรับรองทางการเงินที่สามารถออกได้ฟรีแทนใบรับรองการรับรองร่วมกัน การออกใบรับรองใช้เวลาเพียง 3 นาที และสามารถใช้งานได้นาน 3 ปี สะดวกสบายมาก คุณสามารถสมัครผ่านเว็บไซต์ธนาคาร และสามารถใช้ได้ในหน่วยงานต่างๆ เช่น หน่วยงานด้านภาษี รายได้ประกันสังคม บริษ
길리
길리
길리
길리
길리

17 เมษายน 2567

[Effective Java] รายการ 6. หลีกเลี่ยงการสร้างอ็อบเจ็กต์ที่ไม่จำเป็น คู่มือเกี่ยวกับวิธีลดการสร้างอ็อบเจ็กต์ที่ไม่จำเป็นใน Java อ็อบเจ็กต์แบบไม่เปลี่ยนแปลง เช่น String, Boolean ควรใช้ลิเทอรัล และควรแคชอินสแตนซ์ Pattern สำหรับนิพจน์ทั่วไป นอกจากนี้ การออโต้บอกซ์อาจทำให้ประสิทธิภาพลดลง ดังนั้นจึงควรใช้ประเภทพื้นฐาน รายละเอีย
제이온
제이온
제이온
제이온

28 เมษายน 2567

[ไม่มีพื้นฐานทางวิศวกรรมคอมพิวเตอร์ การอยู่รอดในฐานะนักพัฒนา] 14. สรุปเนื้อหาการสัมภาษณ์ทางเทคนิคที่นักพัฒนาหน้าใหม่ถามบ่อย คู่มือเตรียมตัวสัมภาษณ์งานเทคนิคสำหรับนักพัฒนาหน้าใหม่ บทความนี้จะอธิบายแนวคิดที่มักปรากฏใน การสัมภาษณ์งาน เช่น พื้นที่หน่วยความจำหลัก โครงสร้างข้อมูล RDBMS และ NoSQL การเขียนโปรแกรมเชิงโครงสร้างและเชิงวัตถุ การโอเวอร์ไรด์และการโอเวอร์โหลด อัลกอริทึมการเป
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 เมษายน 2567

[Java] แนวคิด Reflection และวิธีการใช้งาน Reflection เป็น API ที่ช่วยให้โปรแกรม Java สามารถเข้าถึงข้อมูลเกี่ยวกับคลาสในขณะที่โปรแกรมกำลังทำงาน และสามารถจัดการกับคลาสนั้นได้ API นี้สามารถสร้างคลาสใหม่และเข้าถึงฟิลด์และเมธอดได้ในขณะรันไทม์ แต่ควรใช้ด้วยความระมัดระวังเนื่องจากอาจส่งผลต่อการปิดบังข้อ
제이온
제이온
제이온
제이온

25 เมษายน 2567