ทำให้ API ปลอดภัยโดยกำหนดให้ต้องมีคีย์ API

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

สิ่งที่คุณจะได้เรียนรู้

ในบทแนะนำนี้ คุณจะได้เรียนรู้เกี่ยวกับสิ่งต่อไปนี้

  • สร้างพร็อกซี API ที่ต้องใช้คีย์ API
  • เพิ่มผลิตภัณฑ์ API
  • เพิ่มนักพัฒนาแอปและลงทะเบียนแอป
  • เรียก API ด้วยคีย์ API

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

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

  • ถูกต้อง
  • ยังไม่ได้เพิกถอน
  • ตรงกับคีย์ API สำหรับผลิตภัณฑ์ API ที่แสดงคีย์ API ที่ขอ ทรัพยากร

หากคีย์ถูกต้อง คำขอจะได้รับอนุญาต หากคีย์ไม่ถูกต้อง พารามิเตอร์ ทำให้การให้สิทธิ์ล้มเหลว

ในบทแนะนำนี้ คุณจะสร้างพร็อกซี API ที่ต้องใช้ API ที่ถูกต้อง เพื่อเข้าถึงคีย์ได้

สิ่งที่ต้องมี

  • บัญชี Apigee Edge หากยังไม่มี คุณสามารถลงชื่อสมัครใช้ คำแนะนำที่ การสร้างบัญชี Apigee Edge
  • เว็บเบราว์เซอร์ที่จะเรียก API
  • (ไม่บังคับสำหรับส่วนเครดิตเพิ่มเติม) cURL ติดตั้งใน เครื่องของคุณเพื่อทำการเรียก API จากบรรทัดคำสั่งได้

สร้างพร็อกซี API

เกี่ยวกับ "mocktarget"

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

http://mocktarget.apigee.net

เป้าหมายแสดงผล Hello, Guest! ใช้เมนู /help เพื่อรับหน้าความช่วยเหลือของทรัพยากร API อื่นที่มีอยู่

  1. ไปที่ https://apigee.com/edge แล้วลงชื่อเข้าใช้
  2. เปลี่ยนเป็นองค์กรที่ต้องการโดยคลิกชื่อผู้ใช้ที่ ด้านบนของแถบนำทางด้านข้างเพื่อแสดงเมนูโปรไฟล์ผู้ใช้ จากนั้น การเลือกองค์กรจากรายการ

    เลือกองค์กรในเมนูโปรไฟล์ผู้ใช้
  3. คลิกพร็อกซี API ในหน้า Landing Page เพื่อแสดง API รายการพร็อกซี

    เมนู Edge API
  4. คลิก + พร็อกซี
    ปุ่มสร้างพร็อกซี
  5. ในหน้าสร้างพร็อกซี ให้เลือกพร็อกซีแบบย้อนกลับ (ใช้มากที่สุด)
  6. ในหน้ารายละเอียดพร็อกซี ให้กำหนดค่าพร็อกซีดังนี้
    ในฟิลด์นี้ สิ่งที่ควรทำ
    ชื่อพร็อกซี ป้อน helloworld_apikey
    เส้นทางฐานของโปรเจ็กต์

    เปลี่ยนเป็น: /helloapikey

    เส้นทางฐานของโปรเจ็กต์เป็นส่วนหนึ่งของ URL ที่ใช้เพื่อสร้าง ไปยังพร็อกซี API

    หมายเหตุ: สำหรับคำแนะนำของ Apigee เกี่ยวกับการกำหนดเวอร์ชัน API ดู การกำหนดเวอร์ชันในการออกแบบ Web API: The Missing ลิงก์ eBook

    API ที่มีอยู่

    ป้อน http://mocktarget.apigee.net

    ซึ่งระบุ URL เป้าหมายที่ Apigee Edge เรียกใช้ใน ไปยังพร็อกซี API

    คำอธิบาย ป้อน hello world protected by API key
  7. คลิกถัดไป
  8. ในหน้านโยบายทั่วไปสำหรับความปลอดภัย ให้ทำดังนี้ การให้สิทธิ์ เลือกคีย์ API แล้วคลิกถัดไป ช่วงเวลานี้ จะเพิ่มนโยบาย 2 รายการลงในพร็อกซี API
  9. ในหน้าโฮสต์เสมือน ให้เลือกค่าเริ่มต้น และ secure แล้วคลิกถัดไป การเลือกการอนุญาตเริ่มต้น ให้เรียกใช้ API ของคุณด้วย http:// เลือกปลอดภัย ช่วยให้คุณเรียก API ด้วย https:// ได้
  10. ในหน้าสรุป ให้ตรวจสอบว่าการติดตั้งใช้งานการทดสอบ เลือกสภาพแวดล้อมไว้ แล้วคลิกสร้างและทำให้ใช้งานได้
  11. คุณจะเห็นการรับทราบว่าพร็อกซี API ใหม่และ API ของคุณ สร้างผลิตภัณฑ์เรียบร้อยแล้ว และทำให้พร็อกซี API ใช้งานได้ สภาพแวดล้อมการทดสอบของคุณ
  12. คลิกแก้ไขพร็อกซีเพื่อแสดงหน้าภาพรวมสำหรับ พร็อกซี API

ดูนโยบาย

  1. ในตัวแก้ไขพร็อกซี API ให้คลิกแท็บพัฒนา คุณจะเห็น มีการเพิ่มนโยบาย 2 รายการในขั้นตอนคำขอของพร็อกซี API ดังนี้
    • ยืนยันคีย์ API: ตรวจสอบการเรียก API เพื่อให้แน่ใจว่าคีย์ API ถูกต้อง มีคีย์ API อยู่ (ส่งเป็นพารามิเตอร์การค้นหา)
    • นำคีย์ API พารามิเตอร์การค้นหาออก: นโยบาย AssignMessage ที่ นำคีย์ API ออกหลังจากที่ตรวจสอบแล้วเพื่อไม่ให้ส่งผ่าน และเปิดเผยออกโดยไม่จำเป็น
  2. คลิกไอคอนนโยบายคีย์ API ในมุมมองโฟลว์ แล้วดูที่ การกำหนดค่า XML ของนโยบายในมุมมองโค้ดด้านล่าง องค์ประกอบ <APIKey> จะบอกนโยบายตำแหน่งที่ควร มองหาคีย์ API เมื่อมีการเรียก โดยค่าเริ่มต้น เครื่องมือจะมองหา คีย์เป็นพารามิเตอร์การค้นหาที่ชื่อว่า apikey ใน HTTP คำขอ:

    <APIKey ref="request.queryparam.apikey" />
    

    ชื่อ apikey กำหนดเองและเป็นพร็อพเพอร์ตี้ใดก็ได้ ที่มีคีย์ API

ลองเรียกใช้ API

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

  1. สำเร็จ

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

    http://mocktarget.apigee.net
    

    คุณควรได้รับการตอบกลับที่สำเร็จนี้: Hello, Guest!

  2. ความล้มเหลว

    ตอนนี้ให้ลองเรียกใช้พร็อกซี API ของคุณ

    http://ORG_NAME-test.apigee.net/helloapikey
    

    แทนที่ ORG_NAME ด้วยชื่อ องค์กร Edge

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

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    ซึ่งหมายความว่าคุณไม่ได้ส่งคีย์ API ที่ถูกต้อง (เนื่องจาก พารามิเตอร์การค้นหา)

ในขั้นตอนถัดไป คุณจะต้องเพิ่มผลิตภัณฑ์ API

เพิ่มผลิตภัณฑ์ API

วิธีเพิ่มผลิตภัณฑ์ API โดยใช้ Apigee UI

  1. เลือกเผยแพร่ > ผลิตภัณฑ์ API
  2. คลิก +ผลิตภัณฑ์ API
  3. ป้อนรายละเอียดผลิตภัณฑ์สำหรับผลิตภัณฑ์ API

    ช่อง รายละเอียด
    ชื่อ ชื่อภายในของผลิตภัณฑ์ API ห้าม ระบุอักขระพิเศษในชื่อ
    หมายเหตุ: คุณ ไม่สามารถแก้ไขชื่อเมื่อสร้างผลิตภัณฑ์ API แล้ว สำหรับ ตัวอย่างเช่น helloworld_apikey-Product
    ชื่อที่แสดง ชื่อที่แสดงสำหรับผลิตภัณฑ์ API ชื่อที่แสดงใช้ใน UI และสามารถแก้ไขได้ทุกเมื่อ หากไม่ได้ระบุ ค่า ระบบจะใช้ค่าชื่อ ระบบจะเติมข้อมูลในช่องนี้โดยอัตโนมัติโดยใช้ ค่าชื่อ คุณจะแก้ไขหรือลบเนื้อหาก็ได้ จอแสดงผล สามารถใส่อักขระพิเศษได้ ตัวอย่างเช่น helloworld_apikey-Product
    คำอธิบาย คำอธิบายผลิตภัณฑ์ API เช่น Test product for tutorial
    สภาพแวดล้อม สภาพแวดล้อมที่ผลิตภัณฑ์ API จะอนุญาตให้เข้าถึง เช่น test หรือ prod
    การเข้าถึง เลือกสาธารณะ
    อนุมัติคำขอสิทธิ์เข้าถึงโดยอัตโนมัติ เปิดใช้การอนุมัติคำขอคีย์สำหรับ API นี้โดยอัตโนมัติ จากแอปใดก็ได้
    โควต้า ละเว้นสำหรับบทแนะนำนี้
    ขอบเขต OAuth ที่อนุญาต ละเว้นสำหรับบทแนะนำนี้
  4. ในส่วนทรัพยากร API ให้เลือกพร็อกซี API ที่คุณเพิ่ง สร้าง แล้ว เช่น helloworld_apikey
  5. คลิกเพิ่ม
  6. ในส่วนเส้นทาง ให้เพิ่มเส้นทาง "/"
  7. คลิกเพิ่ม
  8. คลิกบันทึก

ในขั้นตอนถัดไป คุณจะได้รับคีย์ API ที่จำเป็น

เพิ่มนักพัฒนาแอปและแอปลงใน องค์กร

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

สร้างนักพัฒนาซอฟต์แวร์

วิธีสร้างนักพัฒนาซอฟต์แวร์

  1. เลือกเผยแพร่ > นักพัฒนาซอฟต์แวร์ในเมนู
  2. คลิก + นักพัฒนาซอฟต์แวร์
  3. ป้อนข้อมูลต่อไปนี้ในหน้าต่างนักพัฒนาซอฟต์แวร์ใหม่

    ในฟิลด์นี้ Enter
    ชื่อ Keyser
    นามสกุล Soze
    ชื่อผู้ใช้ keyser
    อีเมล keyser@example.com
  4. คลิกสร้าง

ลงทะเบียนแอป

วิธีลงทะเบียนแอปนักพัฒนาซอฟต์แวร์

  1. เลือกเผยแพร่ > แอป
  2. คลิก + แอป
  3. ป้อนข้อมูลต่อไปนี้ในหน้าต่างแอปใหม่

    p
    ในฟิลด์นี้ สิ่งที่ควรทำ
    ชื่อและชื่อที่แสดง ป้อน keyser_app
    บริษัท / นักพัฒนาซอฟต์แวร์ เลือก Developer
    นักพัฒนาซอฟต์แวร์ เลือก Keyser Soze (keyser@example.com)
    URL เรียกกลับและหมายเหตุ เว้นว่างไว้
  4. ในส่วนข้อมูลเข้าสู่ระบบ ให้เลือกไม่เลยจากรายการ เมนูหมดอายุ ข้อมูลเข้าสู่ระบบสําหรับแอปนี้จะไม่มีวันหมดอายุ
  5. ในส่วนผลิตภัณฑ์ ให้คลิกเพิ่มผลิตภัณฑ์
  6. เลือก helloworld_apikey-Product
  7. คลิกเพิ่ม
  8. คลิกสร้างด้านบนและด้านขวาของรายละเอียดแอป เพื่อบันทึกงาน

รับคีย์ API

วิธีรับคีย์ API

  1. ในหน้าแอป (เผยแพร่ > แอป) ให้คลิก keyser_app
  2. ในหน้า keyser_app ให้คลิกแสดงข้างคีย์ ในส่วนข้อมูลเข้าสู่ระบบ ในส่วนผลิตภัณฑ์ โปรดสังเกตว่าคีย์เชื่อมโยงกับ helloworld_apikey

    ที่ใช้เวลาเพียง 2 นาที วันที่
  3. เลือกและคัดลอกคีย์ เพราะจะนำไปใช้ในขั้นตอนถัดไป

เรียก API ด้วยคีย์

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

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

ตอนนี้เมื่อเรียกใช้พร็อกซี API คุณควรได้รับการตอบกลับดังนี้ Hello, Guest!

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

โปรดทราบว่าโดยทั่วไป การส่งคีย์ API เป็น พารามิเตอร์การค้นหา คุณควรพิจารณา ส่งในส่วนหัว HTTP แทน

แนวทางปฏิบัติแนะนำ: การส่งคีย์ในส่วนหัว HTTP

ในขั้นตอนนี้ คุณจะต้องแก้ไขพร็อกซีเพื่อค้นหาคีย์ API ใน ส่วนหัวที่ชื่อ x-apikey

  1. แก้ไขพร็อกซี API เลือก Develop > พร็อกซี API > helloworld_apikey และไปที่มุมมองพัฒนา
  2. เลือกนโยบายยืนยันคีย์ API และแก้ไข XML ของนโยบายเพื่อให้ข้อมูล นโยบายที่จะค้นหาใน header แทนใน queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. บันทึกพร็อกซี API เพื่อทำให้การเปลี่ยนแปลงใช้งานได้
  4. เรียก API ต่อไปนี้โดยใช้ cURL เพื่อส่งคีย์ API เป็น ส่วนหัวที่ชื่อ x-apikey อย่าลืมแทนที่ ชื่อองค์กร

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

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

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

หัวข้อที่เกี่ยวข้อง

ต่อไปนี้เป็นบางหัวข้อที่เกี่ยวข้องกับบทแนะนำนี้โดยตรง

มาลงรายละเอียดกันอีกสักเล็กน้อย การปกป้อง API ด้วยคีย์ API เป็นเพียงส่วนหนึ่งของเรื่องราวนี้ บ่อยครั้ง การป้องกัน API ต้องมีการรักษาความปลอดภัยเพิ่มเติม เช่น OAuth

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