คีย์ API คืออะไร? [ปิด]


109

ฉันเห็นคำนี้ในเกือบทุกแอปพลิเคชันข้ามบริการในปัจจุบัน

คีย์ API คืออะไรและใช้อย่างไร

นอกจากนี้คีย์ API สาธารณะและคีย์ส่วนตัวแตกต่างกันอย่างไร

คำตอบ:


111

คีย์ API ที่ "ตรง" ถูกใช้เพื่ออะไรขึ้นอยู่กับว่าใครเป็นผู้ออกและใช้บริการใด อย่างไรก็ตามโดยทั่วไปแล้วคีย์ API เป็นชื่อที่กำหนดให้กับโทเค็นลับบางรูปแบบซึ่งส่งมาพร้อมกับคำขอบริการเว็บ (หรือที่คล้ายกัน) เพื่อระบุที่มาของคำขอ คีย์อาจรวมอยู่ในส่วนย่อยของเนื้อหาคำขอเพื่อตรวจสอบที่มาเพิ่มเติมและเพื่อป้องกันการปลอมแปลงค่า

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

โดยทั่วไปหากคุณมีทั้งคีย์ API สาธารณะและไพรเวตแสดงว่าคีย์นั้นเป็นคู่คีย์สาธารณะ / ส่วนตัวแบบดั้งเดิมที่ใช้ในการเข้ารหัสแบบอสมมาตรบางรูปแบบหรือการลงนามดิจิทัลที่เกี่ยวข้อง ต่อไปนี้เป็นเทคนิคที่ปลอดภัยยิ่งขึ้นสำหรับการระบุแหล่งที่มาของคำขอในเชิงบวกและนอกจากนี้สำหรับการป้องกันเนื้อหาของคำขอจากการสอดแนม (นอกเหนือจากการปลอมแปลง)


12
ใส่ดี! อย่างไรก็ตามจากประสบการณ์ที่ค่อนข้าง จำกัด ของฉันความแตกต่างระหว่างสาธารณะ / ส่วนตัวไม่เกี่ยวข้องกับการเข้ารหัสคีย์สาธารณะ โดยทั่วไปแล้วคีย์ "สาธารณะ" ที่ฉันเห็นมักจะเป็น "access lite" หรืออีกนัยหนึ่งคือคีย์ที่คุณสามารถแจกจ่ายเพื่อให้บุคคลที่สามเข้าถึงข้อมูลที่ไม่ละเอียดอ่อนได้โดยไม่ต้องมอบกุญแจให้กับอาณาจักร
timdev

2
@Rob +1 สำหรับคำตอบโดยละเอียด @tim +1 สำหรับความคิด!
OrangeRind

@tim - เห็นด้วย ฉันคิดว่าวิธีการทั่วไปที่ฉันเห็นคือการมีรหัสย่อยส่วนตัว
Rob

24

พูดโดยทั่วไปมาก:

คีย์ API เพียงแค่ระบุตัวคุณ

หากมีความแตกต่างสาธารณะ / ส่วนตัวคีย์สาธารณะก็คือคีย์ที่คุณสามารถแจกจ่ายให้กับผู้อื่นเพื่อให้พวกเขาได้รับข้อมูลบางส่วนเกี่ยวกับคุณจาก API คีย์ส่วนตัวมีไว้สำหรับการใช้งานของคุณเท่านั้นและให้การเข้าถึงข้อมูลทั้งหมดของคุณ


โดยส่วนใหญ่จะมีลักษณะเหมือนแฮช การสังเกตของฉันถูกต้องหรือไม่
OrangeRind

สามารถสร้างได้ตามที่คุณต้องการตราบเท่าที่ไม่ซ้ำกัน การแฮชข้อมูลบางอย่างดูเหมือนจะเป็นวิธีที่สมเหตุสมผลในการสร้างข้อมูลใช่
Matthew Scharley

ใช่มันดูเหมือนแฮช ท้ายที่สุดคุณไม่ต้องการให้พวกเขาเดาได้ง่าย
timdev

1
ไม่มากก็น้อย - คีย์ API มาตรฐานปลอมส่วนใหญ่สร้างขึ้นโดยการแฮชค่าเทียมบางค่าและทำการเข้ารหัสข้อความธรรมดามาตรฐานในผลลัพธ์เช่น base16, base64 เป็นต้น
Rob

18

ดูเหมือนว่าหลาย ๆ คนจะใช้คีย์ API เป็นโซลูชันด้านความปลอดภัย บรรทัดล่างคือ: ไม่เคยรักษากุญแจ API เป็นความลับมันไม่ได้เป็น ใน https หรือไม่ใครก็ตามที่สามารถอ่านคำขอสามารถดูคีย์ API และสามารถเรียกสิ่งที่ต้องการได้ คีย์ API ควรเป็นเพียงตัวระบุ 'ผู้ใช้' เนื่องจากไม่ใช่โซลูชันความปลอดภัยที่สมบูรณ์แม้ว่าจะใช้กับ ssl ก็ตาม

คำอธิบายที่ดีกว่าอยู่ในลิงก์ของ Eugene Osovetsky: เมื่อทำงานกับ API ส่วนใหญ่เหตุใดจึงต้องมีการตรวจสอบสิทธิ์สองประเภทคือคีย์และความลับ หรือตรวจสอบhttp://nordicapis.com/why-api-keys-are-not-enough/


2
อย่างที่คุณเห็นนี่เป็นคำถามเก่าและอาจถูกมองว่า "กว้างเกินไป" (หรืออาจเป็น "นอกประเด็น") ตามมาตรฐาน Stack Overflow สมัยใหม่ คำถามดังกล่าวมีแนวโน้มที่จะดึงดูดคำตอบที่แสดงความคิดเห็นซึ่งโดยปกติแล้วจะมีการลงคะแนนและ / หรือลบทิ้ง การอยู่ห่างจากคำถามดังกล่าวมักเป็นแนวทางปฏิบัติที่ดีที่สุด คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ศูนย์ช่วยเหลือ
Dev-iL

10

คีย์ API คือค่าเฉพาะที่กำหนดให้กับผู้ใช้บริการนี้เมื่อเขาได้รับการยอมรับให้เป็นผู้ใช้บริการ

บริการจะเก็บรักษาคีย์ที่ออกทั้งหมดและตรวจสอบตามคำขอแต่ละครั้ง

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


แล้วส่วนรวมและส่วนตัวล่ะ?
OrangeRind

1
คีย์สาธารณะและคีย์ส่วนตัวมาจากโดเมนของการเข้ารหัสและมีส่วนเกี่ยวข้องกับการเข้ารหัสแบบไม่สมมาตร ฉันไม่เคยได้ยินคำเหล่านี้ใช้ในความหมายของคีย์ API

2

คีย์ API เป็นเพียงวิธีหนึ่งในการตรวจสอบสิทธิ์ผู้ใช้บริการเว็บ


1

ลองคิดดูว่า "คีย์ API สาธารณะ" คล้ายกับชื่อผู้ใช้ที่ฐานข้อมูลของคุณใช้เป็นข้อมูลเข้าสู่ระบบเซิร์ฟเวอร์การตรวจสอบ จากนั้น "คีย์ API ส่วนตัว" จะคล้ายกับรหัสผ่าน โดยไซต์ / ฐานข้อมูลโดยใช้วิธีนี้การรักษาความปลอดภัยจะยังคงอยู่บนเซิร์ฟเวอร์ของบุคคลที่สาม / การตรวจสอบเพื่อร้องขอที่แท้จริงในการโพสต์หรือแก้ไขไซต์ / ฐานข้อมูลของคุณ

สตริง API เป็นเพียง URL ของการเข้าสู่ระบบสำหรับไซต์ / ฐานข้อมูลของคุณเพื่อติดต่อเซิร์ฟเวอร์การตรวจสอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.