要求 API 金鑰來保護 API

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

課程內容

透過本教學課程,你將會瞭解:

  • 建立需要 API 金鑰的 API Proxy。
  • 新增 API 產品。
  • 新增開發人員並註冊應用程式。
  • 使用 API 金鑰呼叫 API。

請務必防止他人未經授權存取您的 API。單向 就是使用 API 金鑰 (也稱為公開金鑰使用者 鍵應用程式金鑰)。

當應用程式向您的 API,應用程式必須提供有效的金鑰。在執行階段,Verify API 金鑰政策 檢查提供的 API 金鑰:

  • 有效
  • 尚未撤銷
  • 找出公開請求的 API 產品 API 金鑰 資源

如果金鑰有效,系統就會允許要求。如果鍵無效, 則會導致授權失敗。

在這個教學課程中,您會建立需要有效 API 的 API Proxy 。

軟硬體需求

  • Apigee Edge 帳戶。如果還沒有 Google 帳戶,可以註冊 路線指示: 正在建立 Apigee Edge 帳戶
  • 執行 API 呼叫的網路瀏覽器。
  • (適用於其他抵免額部分,並非必要) cURL 安裝位置: 讓機器透過指令列發出 API 呼叫

建立 API Proxy

關於「mocktarget」

mocktarget 服務由 Apigee 代管,可輕鬆傳回 資料。這項作業不需要 API 金鑰或存取權杖。事實上,您可以將 。歡迎點選下列選項,試試這項功能:

http://mocktarget.apigee.net

目標會傳回 Hello, Guest!。使用 /help 取得其他可用 API 資源說明頁面的資源

  1. 前往 https://apigee.com/edge 並登入。
  2. 只要按一下網頁上的使用者名稱,即可切換至所需的機構 側邊導覽列頂端顯示使用者設定檔選單,然後 從清單中選取機構。

    在使用者設定檔選單中選取機構
  3. 按一下到達網頁上的「API Proxy」以顯示 API Proxy 清單

    Edge API 選單
  4. 按一下「+ Proxy」
    「Create Proxy」(建立 Proxy) 按鈕
  5. 在「建立 Proxy」頁面中,選取「反向 Proxy (最常見)」
  6. 在「Proxy 詳細資料」頁面上,按照下列方式設定 Proxy:
    在這個欄位 正確做法
    Proxy 名稱 輸入:helloworld_apikey
    專案基礎路徑

    變更為:/helloapikey

    專案基本路徑包含在用來產生 向 API Proxy 發出要求

    注意:如需 Apigee 的 API 版本管理建議, 請參閱 版本管理Web API Design: The Missing 連結電子書。

    現有 API

    輸入:http://mocktarget.apigee.net

    這會定義 Apigee Edge 叫用特定值時要叫用的目標網址 要求傳送至 API Proxy

    說明 輸入:hello world protected by API key
  7. 點選「下一步」。
  8. 在「一般政策」頁面中,於「安全性」部分查看 授權,選取 API 金鑰,然後按一下下一步。這個 會在您的 API Proxy 中新增兩項政策。
  9. 在「Virtual Hosts」頁面中,選取「default」並 「secure」,然後點選「Next」。選取「default」即可允許 您可以使用 http:// 呼叫 API選取 [安全], 可讓您透過 https:// 呼叫 API。
  10. 在「Summary」頁面中,確認「test」部署 選取環境後,按一下「Create and deploy」
  11. 系統會顯示確認訊息,告知新的 API Proxy 和 API 已成功建立產品,而且 API Proxy 已部署至 測試環境
  12. 按一下「編輯 Proxy」以顯示「總覽」頁面, 並存取 API Proxy

查看政策

  1. 在 API Proxy 編輯器中,按一下「Develop」(開發) 分頁標籤。您會發現 在 API Proxy 要求流程中加入兩項政策:
    • 驗證 API 金鑰:檢查 API 呼叫,確認有效 API 金鑰存在 (以查詢參數傳送)。
    • 移除查詢參數 APIkey:指派給符合下列條件的 AssignMessage 政策 系統會在檢查後移除 API 金鑰,以免金鑰遭到傳遞 以免過度曝光
  2. 按一下流程檢視畫面中的「Verify API 金鑰政策」圖示,然後查看 下方程式碼檢視畫面中的政策 XML 設定。 <APIKey> 元素可以向政策指出應在何處顯示 執行呼叫時尋找 API 金鑰根據預設,它會尋找 鍵做為查詢參數,在 HTTP 中稱為 apikey 要求:

    <APIKey ref="request.queryparam.apikey" />
    

    apikey 是任意名稱,可以是任何屬性 包含 API 金鑰

嘗試呼叫 API

在這個步驟中,您將直接對目標發出成功的 API 呼叫 就會嘗試向 API Proxy 傳送失敗的呼叫,藉此瞭解 就會受到政策規定的保護

  1. 成功

    透過網路瀏覽器前往下列網址。 這是 API Proxy 設為要轉送的目標服務 但目前請直接傳送要求:

    http://mocktarget.apigee.net
    

    您應該會收到以下成功回應:Hello, Guest!

  2. 失敗

    現在嘗試呼叫 API Proxy:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    ORG_NAME 替換為 Edge 機構。

    如果沒有「驗證 API 金鑰」政策,這個呼叫也會提供相同的 回應。但在這個例子中,您應該 下列錯誤回應:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    這表示您未傳遞有效的 API 金鑰 ( 查詢參數)。

在後續步驟中,您將新增 API 產品。

新增 API 產品

如何使用 Apigee UI 新增 API 產品:

  1. 選取「發布」>「發布」API 產品
  2. 按一下「+API 產品」
  3. 輸入 API 產品的「產品詳細資料」

    欄位 說明
    名稱 API 產品的內部名稱。禁止事項 在名稱中指定特殊字元
    注意:您 API 產品建立後即無法修改名稱。適用對象 例如:helloworld_apikey-Product
    顯示名稱 API 產品的顯示名稱。顯示名稱會用於 您隨時可以編輯這個架構如果沒有指定, 系統會使用名稱值。這個欄位會使用 名稱值;你可以編輯或刪除其中的內容螢幕 名稱可包含特殊字元。例如: helloworld_apikey-Product
    說明 API 產品的說明。例如 Test product for tutorial
    環境 API 產品允許存取的環境。 例如 testprod
    存取 選取「公開」
    自動核准存取要求 啟用這個 API 金鑰要求的自動核准功能 開發應用程式
    配額 在本教學課程中忽略此設定。
    允許的 OAuth 範圍 在本教學課程中忽略此設定。
  4. 在「API 資源」專區中,選取您剛才使用的 API Proxy 已建立。例如 helloworld_apikey
  5. 按一下 [新增]。
  6. 在「Paths」區段中,新增路徑「/」。
  7. 按一下 [新增]。
  8. 按一下 [儲存]

在後續步驟中,您會取得必要的 API 金鑰。

將開發人員和應用程式加入 機構組織

接著,我們會模擬開發人員註冊 如何使用您的 API開發人員會有一或多個應用程式呼叫您的 API。 每個應用程式都會取得專屬的 API 金鑰這讓 API 供應商能 精細控管 API 存取權,以及 API 流量 (依應用程式區分)。

建立開發人員

如何建立開發人員:

  1. 選取「發布」>「發布」開發人員
  2. 按一下「+ 開發人員」
  3. 在「New Developer」視窗中輸入以下內容:

    在這個欄位 輸入
    名字 Keyser
    姓氏 Soze
    使用者名稱 keyser
    電子郵件 keyser@example.com
  4. 按一下「建立」

註冊應用程式

如何註冊開發人員應用程式:

  1. 選取「發布」>「發布」應用程式
  2. 按一下「+ 應用程式」
  3. 在「New App」視窗中輸入以下內容:

    p
    在這個欄位 正確做法
    名稱顯示名稱 輸入:keyser_app
    公司 / 開發人員 選取:Developer
    開發人員 選取:Keyser Soze (keyser@example.com)
    回呼網址附註 留空
  4. 在「憑證」部分中,從以下位置選取「永不」選單。這個應用程式的憑證永遠不會過期。
  5. 按一下「產品」下方的「新增產品」。
  6. 選取「helloworld_apikey-Product」helloworld_apikey-Product
  7. 按一下 [新增]。
  8. 按一下上方「應用程式詳細資料」右側的「建立」。 這個區段,以儲存作業。

取得 API 金鑰

取得 API 金鑰的方法如下:

  1. 在「應用程式」頁面 (依序點選「發布」>「應用程式」),按一下 keyser_app
  2. 在「keyser_app」keyser_app頁面中,按一下「Key」keyser_app旁的「Show」keyser_app。 在「憑證」部分中。在「產品」部分中 您會發現金鑰與 helloworld_apikey

    ,直接在 Google Cloud 控制台實際操作。
  3. 選取並複製金鑰。您會在下一個步驟中使用這項資訊。

使用金鑰呼叫 API

您已取得 API 金鑰,可以用它呼叫 API Proxy。輸入 在網路瀏覽器中將以下內容提供給您。使用您的 Edge 機構名稱 ORG_NAME 的 API 金鑰,以及下方 API_KEY 的 API 金鑰。 請確認查詢參數中沒有任何多餘的空格。

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

現在呼叫 API Proxy 時,您應該會看到以下回應: Hello, Guest!

恭喜!您已建立 API Proxy 並受到下列保護: 需要在呼叫中加入有效的 API 金鑰。

請注意,一般而言,將 API 金鑰做為 查詢參數。建議採用 改為透過 HTTP 標頭傳遞

最佳做法:在 HTTP 標頭中傳遞金鑰

在這個步驟中,您將修改 Proxy,以在 名為 x-apikey 的標頭。

  1. 編輯 API Proxy。依序選取「開發」>「開發」API Proxy > helloworld_apikey,前往「Development」檢視畫面。
  2. 選取「Verify API Key」(驗證 API 金鑰) 政策,然後修改政策 XML 以告知使用者 「header」而非 queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. 儲存 API Proxy 以部署變更。
  4. 使用 cURL 進行以下 API 呼叫,將 API 金鑰做為 名為 x-apikey 的標頭。別忘了替換 機構名稱。

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

請注意,為了順利完成變更,您也必須設定 AssignMessage 政策會移除標頭,而非查詢參數。 例如:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>
敬上

相關主題

以下是與本教學課程直接相關的幾個主題:

更深入地保護使用 API 金鑰保護 API 只是案例的一部分。通常, API 防護功能包含 OAuth 等額外安全防護。

OAuth 是 簡單來說,這個通訊協定會交換憑證 (如使用者名稱和密碼) 存取權杖存取權杖是長又隨機的字串,可以在訊息中傳遞 也能在不影響原始憑證的情況下, 從應用程式到開發各種管道存取權 符記的生命值通常不長,所以系統一定會產生新的符記。