教學課程:轉換及保護 API

在本教學課程中,您將了解如何設定轉換 API 的通用原則。 您可能想轉換 API,不顯示私人後端資訊。 轉換 API 有助隱藏後端執行的技術堆疊資訊,或隱藏 API HTTP 回應主體中顯示的原始 URL。

本教學課程也說明如何設定速率限制原則,並新增後端 API 的保護,讓開發人員不過度使用 API。 如需更多原則選項,請參閱 API 管理原則

注意

根據預設,API 管理會設定全域 forward-request 原則。 閘道需要 forward-request 原則,才能完成後端服務的要求。

在本教學課程中,您會了解如何:

  • 轉換 API 以刪除回應標頭
  • 使用 API 管理閘道 URL 取代 API 回應主體中的原始 URL
  • 新增速率限制原則 (節流) 來保護 API
  • 測試轉換

Policies in portal

必要條件

移至您的 API 管理執行個體

  1. 在 Azure 入口網站中,搜尋並選取 [APIM 服務]

    Select API Management services

  2. 在 [API 管理服務] 頁面中,選取您的 API 管理執行個體。

    Select your API Management instance

轉換 API 以刪除回應標頭

本節示範如何隱藏您不想向使用者顯示的 HTTP 標頭。 例如在 HTTP 回應中刪除下列標頭:

  • X-Powered-By
  • X-AspNet-Version

測試原始回應

查看原始回應:

  1. 在您的 API 管理服務執行個體中,選取 [API]
  2. 選取 API 清單中的 [Demo Conference API]
  3. 選取畫面頂端的 [測試] 索引標籤。
  4. 選取 GetSpeakers 作業,並選取 [傳送]

原始 API 回應看起來應如下列回應所示:

Original API response

如您所見,回應會包含 X-AspNet-VersionX-Powered-By 標頭。

設定轉換原則

此範例示範如何使用表單型原則編輯器,協助您設定許多原則,而不必直接編輯原則 XML 陳述式。

  1. 選取 [Demo Conference API]> [設計]> [所有作業]

  2. 在 [輸出處理] 區段中,選取 [+ 新增原則]

    Navigate to outbound policy

  3. 在 [新增輸出原則] 視窗中,選取 [設定標頭]。

    Set HTTP header policy

  4. 若要進行標頭原則設定,請執行下列動作:

    1. 在 [名稱] 底下,輸入 X-Powered-By 在 [動作] 底下,選取 [刪除]
    2. 選取 [+ 新增標頭]。
    3. 在 [名稱] 底下,輸入 X-AspNet-Version 在 [動作] 底下,選取 [刪除]

    Set HTTP header

  5. 選取 [儲存]。 兩個 set-header 原則元素會在 [輸出處理] 區段中顯示。

使用 API 管理閘道 URL 取代 API 回應主體中的原始 URL

本節示範如何以 API 管理閘道 URL,取代 API HTTP 回應主體中顯示的原始 URL。 您可能想隱藏使用者的原始後端 URL。

測試原始回應

查看原始回應:

  1. 選取 [Demo Conference API]> [測試]

  2. 選取 GetSpeakers 作業,並選取 [傳送]

    如您所見,回應會包含原始後端 URL:

    Original URLs in response

設定轉換原則

在此範例中,您會使用原則程式碼編輯器,直接新增原則 XML 程式碼片段至原則定義。

  1. 選取 [Demo Conference API]> [設計]> [所有作業]

  2. [輸出處理] 區段中,選取程式碼編輯器 (</>) 圖示。

    Navigate to outbound policy code editor

  3. 將游標移至空白行上的 <outbound> 元素內。 接著選取畫面右上角的 [顯示程式碼片段]。

    Select show snippets

  4. 在右側視窗的 [轉換原則] 底下,選取 [遮罩內容中的 URL]

    在資料指標新增 <redirect-content-urls /> 元素。

    Mask URLs in content

  5. 選取 [儲存]。

新增速率限制原則 (節流) 來保護 API

本節示範如何設定速率限制,並新增後端 API 的保護,讓開發人員不過度使用 API。 在此範例中,各訂用帳戶識別碼的限制設定為每 15 秒呼叫三次。 15 秒後,開發人員即可重試呼叫 API。

  1. 選取 [Demo Conference API]> [設計]> [所有作業]

  2. [輸入處理] 區段中,選取程式碼編輯器 (</>) 圖示。

    Navigate to inbound policy

  3. 將游標移至空白行上的 <inbound> 元素內。 接著,選取畫面右上角的 [顯示程式碼片段]。

    Set inbound policy

  4. 在右側視窗的 [存取限制原則] 下方,選取 [+ 限制每個金鑰的呼叫速率]

    在資料指標新增 <rate-limit-by-key /> 元素。

    Select limit call rate per key

  5. <inbound> 元素中的 <rate-limit-by-key /> 程式碼修改為下列程式碼。 然後選取儲存

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

測試轉換

此時若在程式碼編輯器中查看程式碼,您的原則將如下列程式碼所示:

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

本節的其餘部分將測試您在此文章中設定的原則轉換。

測試已刪除的回應標頭

  1. 選取 [Demo Conference API]> [測試]

  2. 選取 GetSpeakers 作業,然後選取 [傳送]

    此時,您可以看到已刪除標頭:

    Stripped response headers

測試已取代的 URL

  1. 選取 [Demo Conference API]> [測試]

  2. 選取 GetSpeakers 作業,然後選取 [傳送]

    此時,您可看到已取代該 URL。

    Replaced URLs

測試速率限制 (節流)

  1. 選取 [Demo Conference API]> [測試]

  2. 選取 GetSpeakers 作業。 連續選取三次 [傳送]

    傳送要求 3 次後,您會收到 429 太多要求的回應。

    Too many requests

  3. 至少等候 15 秒,接著再次選取 [傳送]。 此時,您應該得到 200 確定的回應。

下一步

在本教學課程中,您已了解如何:

  • 轉換 API 以刪除回應標頭
  • 使用 API 管理閘道 URL 取代 API 回應主體中的原始 URL
  • 新增速率限制原則 (節流) 來保護 API
  • 測試轉換

前進到下一個教學課程: