โทเค็นการเข้าถึงและที่เก็บข้อมูลโทเค็น ID สำหรับแอปแบบไร้เซิร์ฟเวอร์

ฉันกำลังเขียนแอปแบบไร้เซิร์ฟเวอร์ด้วย AWS (Lambda, API Gateway, Cognito ฯลฯ) และฉันพบว่าตัวเองกำลังสงสัยว่าจะรักษาความปลอดภัยสแต็กของฉันให้ดีที่สุดได้อย่างไร

ฉันได้อ่านมาว่าสำหรับแอปพลิเคชันที่ใช้เซิร์ฟเวอร์ EC2 หรืออย่างอื่น แนวทางปฏิบัติที่ดีที่สุดคือเก็บโทเค็น ID ของผู้ใช้ไว้ที่แบ็กเอนด์ สิ่งนี้สมเหตุสมผล เนื่องจากกระบวนการโหนดจะให้วิธีแก้ปัญหาระยะยาวแก่ฉันสำหรับการแขวนและนำโทเค็น ID มาใช้ซ้ำ ในทางกลับกัน แอปแบบไร้เซิร์ฟเวอร์ไม่ได้ให้ความหรูหราขนาดนี้ ฉันคิดว่าจะเก็บไว้ที่ส่วนหน้า เนื่องจากท้ายที่สุดแล้ว โทเค็น JWT ที่จัดทำโดย Cognito ได้รับการลงนามแล้ว และดังนั้นจึงควรเป็นหลักฐานการงัดแงะ แต่ดูเหมือนว่าจะไม่มั่นคงเล็กน้อยจากฝั่งของฉัน ฉันชอบระบบที่ผู้ใช้ไม่สามารถเข้าถึงโทเค็นของตนเองได้โดยตรง ฉันเคยคิดที่จะขอโทเค็นใหม่สำหรับทุกคำขอที่ส่งไปยัง Lambda แต่นี่ก็ดูเหมือนจะยังห่างไกลจากวิธีแก้ปัญหาที่สมบูรณ์แบบเช่นกัน

มีแนวทางปฏิบัติที่ดีที่สุดที่ได้รับการยอมรับเกี่ยวกับการรับรองความถูกต้องและการอนุญาตแบบไร้เซิร์ฟเวอร์หรือไม่ ฉันมาถูกทางแล้วที่จัดเก็บโทเค็นฝั่งไคลเอ็นต์ในขณะที่ผู้ใช้เปิดแอปอยู่หรือไม่


person Carl    schedule 08.05.2019    source แหล่งที่มา


คำตอบ (1)


ฉันไม่เห็นปัญหาในการจัดเก็บโทเค็นฝั่งไคลเอ็นต์ของคุณ ผู้ใช้สามารถคัดลอกวางโทเค็นจากคำขอส่วนหัวได้ตลอดเวลา โทเค็นไม่ใช่ความลับ ไม่สามารถแก้ไขได้เนื่องจากมีการเซ็นชื่อแบบดิจิทัล

ตัวอย่างเช่นการร้องเป็นส่วนหัวของคำขอ ในการอนุญาตจะถูกจัดเก็บโทเค็น jwt ที่สามารถถอดรหัสได้ใน https://jwt.io/ แต่ไม่สามารถแก้ไขได้ ,

Host: aa.aa.aa
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer: token234567890-eddedede
X-Requested-With: XMLHttpRequest
Connection: keep-alive

นอกจากนี้ แนวทางปฏิบัติที่ดีที่สุดในการหมดอายุโทเค็นปีและต่ออายุตามช่วงเวลาที่กำหนด

person Spiff    schedule 08.05.2019
comment
นั่นคือสมมติฐานของฉัน ฉันจะไปข้างหน้าและทำอย่างนั้น - person Carl; 08.05.2019