您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
您可以附加驗證 API 金鑰類型的政策,為 API 設定 API 金鑰驗證。驗證 API 金鑰政策的唯一必要設定是 API 金鑰在用戶端要求中的預期位置。API Proxy 會檢查您指定的位置,並擷取 API 金鑰。 如果 API 金鑰不在預期位置,系統就會擲回錯誤並拒絕要求。API 金鑰位於查詢參數、表單參數或 HTTP 標頭中。
舉例來說,下列政策設定將預期的金鑰位置定義為名為 apikey
的查詢參數。成功的要求必須以查詢參數的形式表示 API 金鑰,例如 ?apikey=Y7yeiuhcbKJHD790
。
如要驗證 API 金鑰,請建立下列政策:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
這項政策可以附加至任何需要保護的 API。
如需這個政策類型的完整說明文件,請參閱政策參考主題「驗證 API 金鑰政策」。
API Proxy 會自動傳遞要求中的所有 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 Proxy 流程,將政策套用至要求 PreFlow 後,API Proxy 從用戶端應用程式收到的每個要求都會驗證 API 金鑰。驗證完成後,便會從傳出要求中移除 API 金鑰。
將政策附加至 API Proxy 的 ProxyEndpoint,如下所示:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
附加政策後,部署 API Proxy。
提交具備有效 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