คีย์ API หรือแม้แต่โทเค็นจัดอยู่ในประเภทของกลไกการพิสูจน์ตัวตนและการอนุญาตโดยตรงเนื่องจากให้สิทธิ์เข้าถึงทรัพยากรที่เปิดเผยของ REST API กลไกโดยตรงดังกล่าวสามารถใช้ในกรณีการใช้การมอบหมาย
ในการเข้าถึงทรัพยากรหรือชุดของทรัพยากรที่เปิดเผยโดยจุดสิ้นสุด REST จำเป็นต้องตรวจสอบสิทธิ์ของผู้ร้องขอตามข้อมูลประจำตัว ขั้นตอนแรกของเวิร์กโฟลว์คือการยืนยันตัวตนโดยการพิสูจน์ตัวตนตามคำขอ ขั้นตอนต่อเนื่องคือการตรวจสอบข้อมูลประจำตัวกับชุดของกฎที่กำหนดไว้เพื่ออนุญาตระดับการเข้าถึง (เช่นอ่านเขียนหรืออ่าน / เขียน) เมื่อขั้นตอนดังกล่าวบรรลุผลข้อกังวลเพิ่มเติมโดยทั่วไปคืออัตราการร้องขอที่อนุญาตซึ่งหมายถึงจำนวนคำขอต่อวินาทีที่ผู้ร้องขอได้รับอนุญาตให้ดำเนินการต่อทรัพยากรที่กำหนด
OAuth (Open Authorization)เป็นโปรโตคอลมาตรฐานสำหรับการเข้าถึงที่ได้รับมอบหมายซึ่ง บริษัท อินเทอร์เน็ตรายใหญ่มักใช้เพื่อให้สิทธิ์การเข้าถึงโดยไม่ต้องให้รหัสผ่าน ตามที่ชัดเจน OAuth เป็นโปรโตคอลที่ตอบสนองข้อกังวลดังกล่าวข้างต้น: การพิสูจน์ตัวตนและการอนุญาตโดยให้สิทธิ์เข้าถึงทรัพยากรเซิร์ฟเวอร์ที่ได้รับมอบหมายอย่างปลอดภัยในนามของเจ้าของทรัพยากร มันขึ้นอยู่กับกลไกการเข้าถึงโทเค็นซึ่งอนุญาตให้บุคคลที่สามสามารถเข้าถึงทรัพยากรที่จัดการโดยเซิร์ฟเวอร์ในนามของเจ้าของทรัพยากร ตัวอย่างเช่น ServiceX ต้องการเข้าถึงบัญชี Google ของ John Smith ในนามของ John เมื่อ John ได้มอบอำนาจให้คณะผู้แทน จากนั้น ServiceX จะออกโทเค็นตามเวลาเพื่อเข้าถึงรายละเอียดบัญชี Google ซึ่งมีโอกาสมากในการเข้าถึงแบบอ่านเท่านั้น
แนวคิดของคีย์ API คล้ายกับโทเค็น OAuth ที่อธิบายไว้ข้างต้นมาก ความแตกต่างที่สำคัญประกอบด้วยกรณีที่ไม่มีการมอบสิทธิ์: ผู้ใช้ร้องขอคีย์โดยตรงไปยังผู้ให้บริการสำหรับการโต้ตอบแบบเป็นโปรแกรมที่ต่อเนื่องกัน กรณีของคีย์ API นั้นขึ้นอยู่กับเวลาเช่นกัน: คีย์เป็นโทเค็น OAuth ขึ้นอยู่กับสัญญาเช่าเวลาหรือระยะเวลาหมดอายุ ในแง่มุมเพิ่มเติมคีย์และโทเค็นอาจถูก จำกัด อัตราตามสัญญาบริการกล่าวคือสามารถให้บริการได้ตามจำนวนคำขอต่อวินาทีเท่านั้น
สรุปในความเป็นจริงไม่มีความแตกต่างอย่างแท้จริงระหว่างกลไกการพิสูจน์ตัวตนและการอนุญาตแบบดั้งเดิมและเวอร์ชันที่ใช้คีย์ / โทเค็น กระบวนทัศน์แตกต่างกันเล็กน้อย: แทนที่จะใช้ข้อมูลประจำตัวซ้ำในแต่ละปฏิสัมพันธ์ระหว่างไคลเอนต์และเซิร์ฟเวอร์จะใช้คีย์ / โทเค็นสนับสนุนซึ่งทำให้ประสบการณ์การโต้ตอบโดยรวมราบรื่นขึ้นและมีความปลอดภัยมากขึ้น (โดยปกติจะเป็นไปตามมาตรฐานJWT , คีย์และ โทเค็นได้รับการเซ็นชื่อแบบดิจิทัลโดยเซิร์ฟเวอร์เพื่อหลีกเลี่ยงการประดิษฐ์)
- การพิสูจน์ตัวตนโดยตรงและการอนุญาต : โปรโตคอลที่ใช้คีย์เป็นตัวแปรของเวอร์ชันที่ใช้ข้อมูลรับรองแบบเดิม
- การรับรองความถูกต้องและการให้สิทธิ์ที่ได้รับมอบหมาย : เช่นโปรโตคอลที่ใช้ OAuth ซึ่งจะใช้โทเค็นอีกครั้งเป็นเวอร์ชันที่อิงตามข้อมูลรับรอง (เป้าหมายโดยรวมจะไม่เปิดเผยรหัสผ่านให้กับบุคคลที่สาม)
ทั้งสองหมวดหมู่ใช้เวิร์กโฟลว์การยืนยันตัวตนแบบดั้งเดิมสำหรับการโต้ตอบครั้งแรกกับเซิร์ฟเวอร์ที่เป็นเจ้าของทรัพยากรที่สนใจ