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

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

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

ในบทแนะนำนี้ คุณจะได้เรียนรู้วิธี:

  • สร้างพร็อกซี 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 โปรดดู การกำหนดเวอร์ชันใน eBook เรื่องการออกแบบ Web API: ลิงก์ที่ขาดหายไป

    API ที่มีอยู่

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

    แอตทริบิวต์นี้กำหนด URL เป้าหมายที่ Apigee Edge เรียกใช้ในคำขอที่ส่งไปยังพร็อกซี API

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

ดูนโยบาย

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

รับคีย์ API

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

  1. ในหน้า Apps (เผยแพร่ > แอป) ให้คลิก keyser_app
  2. ในหน้า keyser_app ให้คลิก Show ถัดจาก Key ในส่วน Credentials ในส่วน Product ให้สังเกตว่าคีย์เชื่อมโยงกับ 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 เป็นพารามิเตอร์การค้นหาไม่ใช่แนวทางปฏิบัติที่ดี คุณควร ส่งผ่าน URL ดังกล่าวในส่วนหัว 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 เป็นโปรโตคอลแบบเปิดที่สรุปง่ายๆ ก็คือแลกเปลี่ยนข้อมูลเข้าสู่ระบบ (เช่น ชื่อผู้ใช้และรหัสผ่าน) สำหรับโทเค็นเพื่อการเข้าถึง โทเค็นเพื่อการเข้าถึงเป็นสตริงแบบสุ่มขนาดยาวที่ส่งต่อผ่านไปป์ไลน์ข้อความได้ แม้จากแอปหนึ่งไปยังอีกแอปหนึ่ง โดยไม่กระทบต่อข้อมูลเข้าสู่ระบบเดิม โทเค็นเพื่อการเข้าถึงมักมีอายุการใช้งานสั้น จึงมีการสร้างโทเค็นใหม่ๆ อยู่เสมอ