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

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

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

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

  • สร้างพร็อกซี 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 Proxy ในหน้า Landing Page เพื่อแสดงรายการ API Proxy

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

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

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

    หมายเหตุ: ดูคำแนะนำของ Apigee เกี่ยวกับการกำหนดเวอร์ชัน API ได้ที่ การกำหนดเวอร์ชันในอีบุ๊กการออกแบบ Web API: The Missing Link

    API ที่มีอยู่

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

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

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

ดูนโยบาย

  1. ในเครื่องมือแก้ไขพร็อกซี API ให้คลิกแท็บพัฒนา คุณจะเห็นว่า มีการเพิ่มนโยบาย 2 รายการลงในขั้นตอนการส่งคำขอของพร็อกซี API ดังนี้
    • ยืนยันคีย์ API: ตรวจสอบการเรียก API เพื่อให้แน่ใจว่ามีคีย์ API ที่ถูกต้อง (ส่งเป็นพารามิเตอร์การค้นหา)
    • นำพารามิเตอร์การค้นหา apikey ออก: นโยบาย 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 โดยใช้ UI ของ Apigee

  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 ของคุณ นักพัฒนาแอปจะมีแอปอย่างน้อย 1 แอปที่เรียกใช้ 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 ของ Callback และหมายเหตุ เว้นว่างไว้
  4. ในส่วนข้อมูลเข้าสู่ระบบ ให้เลือกไม่หมดอายุจากเมนูการหมดอายุ ข้อมูลเข้าสู่ระบบสำหรับแอปนี้จะไม่มีวันหมดอายุ
  5. คลิกเพิ่มผลิตภัณฑ์ในส่วนผลิตภัณฑ์
  6. เลือก helloworld_apikey-Product
  7. คลิกเพิ่ม
  8. คลิกสร้างที่ด้านบนและด้านขวาของส่วนรายละเอียดแอป เพื่อบันทึกงาน

รับคีย์ API

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

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

  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 เลือกพัฒนา > พร็อกซี 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
    

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

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

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

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

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

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