練習 - 移除標頭資訊
發佈 Web API 的公司通常需要謹慎控制其 API 所傳回 HTTP 標頭,最好是不要重寫 API 原始程式碼。
政府已決定透過 RESTful API 與其機關共用人口普查資料。 關鍵需求是安全地共用資料且可以輕鬆修改來加速整合。 作為首席開發人員,您需要建立一個 API 閘道。 您使用閘道來發佈使用新式安全性標準公開 OpenAPI 端點的 RESTful Census API。
在這裡,您將會:
- 發佈 RESTful Census API。
- 部署 API 管理閘道。
- 透過閘道端點公開 Census API。
- 從回應中移除標頭。
重要
您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
部署 Census Web API
您開發了一個可傳回敏感性人口普查資訊的 .NET Core 應用程式。 此應用程式包含 Swashbuckle 以產生 OpenAPI 文件。
為了節省時間,讓我們從執行指令碼以在 Azure 中裝載 RESTful API 開始。 該指令碼會執行下列步驟:
- 在免費層中建立 Azure App Service 方案。
- 在 Azure App Service 內建立 Web API,這是專為來自本機存放庫的 Git 部署所設定。
- 針對我們的應用程式設定帳戶層級部署認證。
- 在本機設定 Git。
- 將 Web API 部署到 App Service 執行個體。
登入 Azure 入口網站。
在 Azure 工作列中,選取 Cloud Shell 圖示以開啟 Azure Cloud Shell。
若要複製包含應用程式來源的存放庫,請在 Cloud Shell 中執行下列
git clone
命令:git clone https://github.com/MicrosoftDocs/mslearn-protect-apis-on-api-management.git
若要瀏覽至本機的存放庫資料夾,請執行下列命令:
cd mslearn-protect-apis-on-api-management
一如其名,setup.sh 是您為了建立測試 API 所執行的指令碼。 這個指令碼會產生公用 Web 應用程式來公開 OpenAPI 介面:
bash setup.sh
指令碼大約需要執行一分鐘。 當指令碼完成時,會顯示兩個 URL,您可用來測試應用程式部署。 請注意,在部署期間,執行應用程式所需的所有相依性都會自動安裝於遠端 App Service 上。
若要測試應用程式已正確部署,請從 Cloud Shell 輸出中複製第一個 URL,並貼入您的瀏覽器。 瀏覽器應該會顯示應用程式的 Swagger UI,並宣告下列 RESTful 端點:
- api/census,這會傳回人口普查和相關聯人員
- api/census/{censusYear},這會傳回指定年份的人口普查和相關聯人員
- api/people/{reference},這會傳回特定人員的詳細資訊
最後,從 Cloud Shell 輸出中複製最後一個 URL。 此 URL 是 Swagger JSON URL,稍後在本練習中會需要此 URL。
部署 API 閘道
此練習中的下一個步驟是在 Azure 入口網站中建立 API 閘道。 在下一節中,您將使用此閘道來發佈 API:
登入 Azure 入口網站。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。
在左側功能表窗格中,選取 [整合],然後在 [搜尋服務和市集] 搜尋方塊中輸入 APIM。 選取結果中的 [APIM] 卡片,然後選取 [建立] 以開啟 [建立 APIM 服務] 窗格。
在 [基本] 索引標籤上,為每個設定輸入下列值。
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶 資源群組 選取新的或現有的資源群組。 資源群組是保留 Azure 解決方案相關資源的邏輯容器。 [執行個體詳細資料] 區域 選取可用的區域。 資源名稱 輸入 apim-CensusData<random number>
,以您自己的一系列數字取代random number
,以確保名稱是全域唯一的。組織名稱 輸入 Government-Census
。 用於開發人員入口網站及電子郵件通知的組織名稱。 (開發人員入口網站和通知未在所有服務層級提供。)管理員電子郵件 用來接收所有系統通知的電子郵件地址。 定價層 定價層 從下拉式清單中選取 Consumption (99.95% SLA)
。注意
使用量層提供用於測試的快速部署,並具有使用付費價格模式。 整體 API 管理體驗非常類似於其他價格層。
選取 [檢閱 + 建立]。 通過驗證之後,選取 [建立]。 部署可能需要數分鐘。 部署完成後,您會看到 Azure 資源中列出 API 管理執行個體。 選取 [移至資源] 以檢視您 API 管理服務的窗格。
匯入 API
立即將 Census API 匯入至 APIM 閘道:
在 APIM 執行個體的左側功能表窗格中,於 [API] 底下選取 [API],然後選取 [+ 新增 API]。
在 [從定義建立] 底下,選取 [OpenAPI]。 [從 OpenAPI 規格建立] 對話方塊隨即出現。
在 [OpenAPI 規格] 欄位中,貼上您稍早在練習中儲存的 Swagger JSON URL。
注意
您會注意到,當您按 Tab 鍵移出方塊時,系統會為您填入某些其他欄位。 這是因為您使用了 OpenAPI,其會指定大多數必要的連線詳細資料。
將其他設定保留為預設值,然後選取 [建立]。
測試 API
讓我們查看預設從 API 傳回的資料:
在 Azure 入口網站功能表中或從 [首頁] 頁面,選取 [所有資源],然後選取您的 APIM 執行個體。
在左側功能表窗格的 [API] 底下,選取 [API],然後在中間窗格中選取 [人口普查資料]。
在頂部功能表列中,選取 [測試] 索引標籤,然後選取 [GetLatestCensus] 作業。
請選取傳送。
請注意,x-powered-by 會出現在回應中,並顯示架構為 ASP.NET。
移除標頭
現在,我們會新增原則,以將 x-powered-by 標頭從 API 所傳送的回應中移除:
再次選取 [人口普查資料],然後在頂部功能表列中,選取 [設計] 索引標籤。
選取 [所有作業],然後在 [輸出處理] 區段中,選取 </> 圖示。 原則 XML 編輯器隨即出現。
將預設的
<outbound>
標籤取代為下列程式碼:<outbound> <set-header name="x-powered-by" exists-action="delete" /> <base /> </outbound>
選取 [儲存]。
測試標頭的移除
您現在應該能夠執行測試,以證明標頭已移除:
再次選取 [人口普查資料],然後在頂部功能表列中,選取 [測試] 索引標籤。
選取 [GetLatestCensus] 作業,然後選取 [傳送]。
x-powered-by 標頭不應位在 HTTP 回應中。