การตรวจสอบสิทธิ์ API โทเค็น VS โทเค็นแบบไดนามิกครั้งเดียว
เรากำลังทำงานในโครงการใหม่เราเป็นผู้นำในการพัฒนาสองคนและได้ข้ามทางไปถึงวิธีการใช้โทเค็นเพื่อรักษาความปลอดภัยการสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอนต์ คำแนะนำแรก: (โทเค็น AKA แบบคงที่หนึ่งครั้ง) ลูกค้าร้องขอโทเค็นหลักโดยการส่งชื่อผู้ใช้และรหัสผ่านและ current_time (ตัวแปรนี้จะถูกบันทึกไว้ในฐานข้อมูลของเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ด้วย) ไปยัง api เซิร์ฟเวอร์ตีความอินพุตและแสดงโทเค็นที่ถูกแฮช (เช่น: 58f52c075aca5d3e07869598c4d66648) บันทึกไว้ในฐานข้อมูลและส่งคืนไปยังไคลเอนต์ ตอนนี้ไคลเอนต์จะบันทึกโทเค็นหลักและสร้างโทเค็นแฮชใหม่โดยใช้โทเค็นหลัก + ตัวแปร current_time ที่ส่งในคำขอการตรวจสอบสิทธิ์ (ให้เรียกโทเค็นใหม่นี้ว่า main_token) ด้วยเซิร์ฟเวอร์ทำเหมือนกันและสร้างโทเค็นเดียวกัน . ทุกครั้งที่ลูกค้าสอบถามเซิร์ฟเวอร์ API มันจะส่ง main_token ไปยังเซิร์ฟเวอร์ตอนนี้เซิร์ฟเวอร์จะเปรียบเทียบโทเค็นที่สร้างในนั้นโดยที่ main_token ส่งมาจากลูกค้าหากตรงกับมันหมายความว่าผู้ใช้เป็นของจริง คำแนะนำที่สอง: (โทเค็นไดนามิก) ไคลเอนต์สร้างสองคีย์สุ่ม ($ key1 = rand (10,000,90000); $ key2 = แรนด์ (10,000,90000);) ในแต่ละคำขอบน API ลูกค้าจะสร้างแฮชโดยใช้ประเภทคิวรีและสองคีย์ด้วย อัลกอริทึมที่ซับซ้อนและส่งสองคีย์เหล่านี้ + แฮชไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่ใช้อัลกอริทึมเดียวกับที่ใช้ในไคลเอนต์สร้างแฮชและเปรียบเทียบกับเซิร์ฟเวอร์ที่ส่งโดยไคลเอนต์หากตรงกับเซิร์ฟเวอร์จะจัดการกับแบบสอบถาม …