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

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

คุณสามารถตั้งค่าการตรวจสอบคีย์ 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 ออกจาก ข้อความเพื่อไม่ให้ระบบส่งคีย์ 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