การตั้งค่าการตรวจสอบคีย์ 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