เมื่อฉันอ่านคำถามของคุณฉันได้พยายามอย่างไม่ประสบความสำเร็จในการค้นหาบนอินเทอร์เน็ตว่ามีการเข้ารหัสหรือเซ็นโทเค็นของอินเทอร์เน็ตอย่างไร ฉันเดาโทเค็นผู้ถือไม่ได้แฮช (อาจเป็นบางส่วน แต่ไม่สมบูรณ์) เพราะในกรณีนี้มันจะไม่สามารถถอดรหัสและเรียกคืนคุณสมบัติผู้ใช้จากมันได้
แต่ดูเหมือนว่าคำถามของคุณกำลังพยายามค้นหาคำตอบเกี่ยวกับฟังก์ชันโทเค็นของ Bearer:
สมมติว่าฉันกำลังใช้ผู้ให้บริการการอนุญาตฉันสามารถจัดหาสตริงประเภทใดก็ได้สำหรับผู้ถือโทเค็นหรือไม่ มันสามารถเป็นสตริงสุ่ม มันจะต้องมีการเข้ารหัส base64 ของคุณลักษณะบางอย่างหรือไม่? มันควรจะถูกแฮช
ดังนั้นฉันจะพยายามอธิบายว่าโทเค็นของผู้ถือและโทเค็นรีเฟรชทำงานอย่างไร:
เมื่อคำขอของผู้ใช้ไปยังเซิร์ฟเวอร์สำหรับผู้ใช้ส่งโทเค็นและรหัสผ่านผ่าน SSL ผลตอบแทนเซิร์ฟเวอร์สองสิ่ง: การเข้าถึงโทเค็นและรีเฟรชโทเค็น
โทเค็นการเข้าถึงเป็นโทเค็นผู้ถือที่คุณจะต้องเพิ่มในส่วนหัวของคำขอทั้งหมดที่จะรับรองความถูกต้องในฐานะผู้ใช้ที่เป็นรูปธรรม
Authorization: Bearer <access_token>
โทเค็นการเข้าถึงเป็นสตริงที่เข้ารหัสซึ่งมีคุณสมบัติผู้ใช้ทั้งหมดการอ้างสิทธิ์และบทบาทที่คุณต้องการ (คุณสามารถตรวจสอบว่าขนาดของการเพิ่มขึ้นของโทเค็นถ้าคุณเพิ่มบทบาทหรือสิทธิเรียกร้อง) เมื่อเซิร์ฟเวอร์ทรัพยากรได้รับโทเค็นการเข้าถึงจะสามารถถอดรหัสได้และอ่านคุณสมบัติผู้ใช้เหล่านี้ วิธีนี้ผู้ใช้จะได้รับการตรวจสอบและให้สิทธิ์พร้อมกับแอปพลิเคชันทั้งหมด
โทเค็นการเข้าถึงมีอายุสั้น ๆ (เช่น 30 นาที) หากราชสกุลเข้าถึงมีหมดอายุนานมันจะเป็นปัญหาเพราะในทางทฤษฎีมีความเป็นไปได้ที่จะยกเลิกมันไม่มี ลองจินตนาการถึงผู้ใช้ที่มีบทบาท = "ผู้ดูแลระบบ" ที่เปลี่ยนเป็น "ผู้ใช้" หากผู้ใช้เก็บโทเค็นเก่าไว้กับ role = "Admin" ผู้ใช้จะสามารถเข้าถึงโทเค็นหมดอายุด้วยสิทธิ์ของผู้ดูแลระบบ นั่นเป็นเหตุผลที่โทเค็นการเข้าถึงมีอายุสั้น
แต่ประเด็นหนึ่งอยู่ในใจ หากโทเค็นการเข้าถึงมีอายุสั้นเราจะต้องส่งผู้ใช้และรหัสผ่านทุกช่วงเวลาสั้น ๆ นี่คือความปลอดภัยหรือไม่ ไม่มันไม่ใช่ เราควรหลีกเลี่ยง นั่นคือเมื่อโทเค็นรีเฟรชปรากฏขึ้นเพื่อแก้ปัญหานี้
ราชสกุลรีเฟรชถูกเก็บไว้ในฐานข้อมูลและจะมีวันหมดอายุยาว (ตัวอย่าง: 1 เดือน)
ผู้ใช้สามารถรับโทเค็นการเข้าถึงใหม่ (เมื่อหมดอายุเช่นทุก ๆ 30 นาที) โดยใช้โทเค็นการรีเฟรชที่ผู้ใช้ได้รับในคำขอแรกสำหรับโทเค็น เมื่อโทเค็นการเข้าถึงหมดอายุลูกค้าจะต้องส่งโทเค็นการฟื้นฟู หากโทเค็นการรีเฟรชนี้มีอยู่ในฐานข้อมูลเซิร์ฟเวอร์จะกลับสู่โทเค็นการเข้าถึงใหม่และโทเค็นการรีเฟรชอีกรายการหนึ่ง (และจะแทนที่โทเค็นการรีเฟรชเก่าด้วยอันใหม่)
ในกรณีที่โทเค็นการเข้าถึงของผู้ใช้ถูกทำลายโทเค็นการรีเฟรชของผู้ใช้นั้นจะต้องถูกลบออกจากฐานข้อมูล วิธีนี้โทเค็นจะใช้ได้เฉพาะเมื่อโทเค็นการเข้าถึงหมดอายุเพราะเมื่อแฮกเกอร์พยายามรับโทเค็นการเข้าถึงใหม่ที่ส่งโทเค็นการรีเฟรชการกระทำนี้จะถูกปฏิเสธ