設定 API 金鑰驗證

查看 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 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 金鑰的值 也能使用 Google Cloud CLI 或 Compute Engine 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