การตั้งค่าการตรวจสอบคีย์ API

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

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

เช่น การกำหนดค่านโยบายด้านล่างจะกำหนดตำแหน่งคีย์ที่คาดไว้ว่าเป็นพารามิเตอร์การค้นหาชื่อ apikey คำขอที่สำเร็จต้องแสดงคีย์ API เป็นพารามิเตอร์การค้นหาต่อท้ายคำขอ ตัวอย่างเช่น ?apikey=Y7yeiuhcbKJHD790

หากต้องการยืนยันคีย์ API ให้สร้างนโยบายต่อไปนี้

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

คุณแนบนโยบายนี้กับ API ใดก็ได้ที่ต้องการปกป้อง

ดูเอกสารที่ครอบคลุมของนโยบายนี้ได้ในหัวข้ออ้างอิงนโยบายยืนยันนโยบายคีย์ API

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

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

เอกสารเกี่ยวกับนโยบาย

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

แนบนโยบายกับ ProxyEndpoint ของพร็อกซี API เพื่อปกป้องดังนี้

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

หลังจากแนบนโยบายแล้ว ให้ทำให้พร็อกซี API ใช้งานได้

การส่งคำขอที่มีคีย์ API ที่ถูกต้อง

ในฐานะผู้ดูแลระบบในองค์กร คุณสามารถเรียกข้อมูลคีย์ API ของแอปได้ดังนี้

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

โปรไฟล์แอปที่ส่งกลับสำหรับการเรียกจะมีคีย์ผู้ใช้ (คีย์ API) และข้อมูลลับ ค่าคีย์ผู้บริโภคคือค่าที่คุณใช้สำหรับคีย์ API ในคำขอที่ส่งไปยัง API ที่มีการป้องกัน

เช่น คำขอที่ไม่มีคีย์ API จะทำให้การให้สิทธิ์ล้มเหลว

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

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

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

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

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

ผลลัพธ์ที่คาดหวังคือการตอบสนองที่ประสบความสำเร็จจากบริการสภาพอากาศ

การแก้ไขค่าของคีย์ API ในคำขอทำให้การให้สิทธิ์ล้มเหลว

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

ผลลัพธ์ใน:

OAuth Failure : Consumer Key is Invalid

โปรดทราบว่าในฐานะผู้ดูแลระบบขององค์กร คุณจะเรียกข้อมูลรหัสผู้ใช้สำหรับแอปที่ลงทะเบียนในองค์กรได้โดยทำดังนี้

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password