設定認證管理員 - GitHub API
適用於:所有 API 管理 層
本文會帶您了解如何在 API 管理中建立受控連線,及呼叫需要 OAuth 2.0 權杖的 GitHub API。 此範例使用授權碼授與類型。
您將學習如何:
- 在 GitHub 中註冊應用程式
- 在 API 管理中設定認證提供者
- 設定連線
- 在 API 管理中建立 API 並設定原則
- 在 API 管理中測試 GitHub API
必要條件
- 需要 GitHub 帳戶。
- 執行中的 APIM 執行個體。 如有必要,請建立 Azure APIM 執行個體。
- 在 APIM 執行個體中,針對 APIM 啟用系統指派的受控識別。
步驟 1:在 GitHub 中註冊應用程式
建立 API 適用的 GitHub OAuth 應用程式,並針對您想要呼叫的要求授與該應用程式適當權限。
登入 GitHub。
在您的帳戶設定檔中,前往 [設定]>[開發人員設定]>[OAuth 應用程式]。選取 [新增 OAuth 應用程式]。
- 輸入應用程式的應用程式名稱和首頁 URL。 在此範例中,您可以提供預留位置 URL,例如
http://localhost
。 - (選用) 新增應用程式描述。
- 在 [授權回撥 URL] (重新導向 URL) 中,輸入
https://authorization-manager.consent.azure-apim.net/redirect/apim/<YOUR-APIM-SERVICENAME>
以取代您要設定認證提供者的 API 管理執行個體名稱。
- 輸入應用程式的應用程式名稱和首頁 URL。 在此範例中,您可以提供預留位置 URL,例如
選取 [註冊應用程式]。
在 [一般] 頁面中,複製將在步驟 2 使用的用戶端識別碼。
選取 [產生新的用戶端密碼]。 此密碼不會再次顯示,請複製密碼。您將在步驟 2 使用此密碼。
步驟 2:在 APIM 中設定認證提供者
登入入口網站,並瀏覽至您的 API 管理執行個體。
在左側功能表上,選取 [認證管理員]>[+ 建立]。
在 [建立認證提供者] 頁面上,輸入下列設定:
設定 值 認證提供者名稱 您選擇的名稱,例如 github-01 識別提供者 選取 [GitHub] 授與類型 選取 [授權碼] 用戶端識別碼 貼上先前在應用程式註冊所複製的值 用戶端密碼 貼上先前在應用程式註冊所複製的值 範圍 在此範例中,將範圍設定為 [使用者] 選取 建立。
出現提示時,請檢閱顯示的 OAuth 重新導向 URL,然後選取 [是] 以確認符合您在應用程式註冊中輸入的 URL。
步驟 3:設定連線
在 [連線] 索引標籤上,完成與提供者連線的步驟。
注意
設定連線時,APIM 預設會設定存取原則,以允許透過執行個體的系統指派受控識別進行存取。 在此範例中,此存取權已足夠。 您可以視需要新增其他存取原則。
- 輸入連線名稱,然後選取 [儲存]。
- 在 [步驟 2: 登入您的連線] (適用於授權碼授與類型) 底下,選取登入認證提供者的連結。 完成該處授權存取的步驟,然後返回 APIM。
- 在 [步驟 3: 判斷誰可以存取此連線 (存取原則)] 底下,會列出受控識別成員。 新增其他成員是選用步驟,視您的案例而定。
- 選取 [完成]。
新的連線會出現在連線清單中,並顯示 [已連線] 狀態。 如果您想要為認證提供者建立另一個連線,請完成上述步驟。
提示
您可以隨時使用入口網站來新增、更新或刪除認證提供者的連線。 如需詳細資訊,請參閱設定多個連線。
步驟 4:在 API 管理中建立 API 並設定原則
登入入口網站,並瀏覽至您的 APIM 執行個體。
在左側功能表中,選取 [API]>[+ 新增 API]。
選取 [HTTP] 並輸入下列設定。 然後選取建立。
設定 值 顯示名稱 githubuser Web 服務 URL https://api.github.com
API URL 尾碼 githubuser 瀏覽至新建立的 API 並選取 [新增作業]。 輸入下列設定並選取 [儲存]。
設定 值 顯示名稱 getauthdata GET 的 URL /user 遵循上述步驟,使用下列設定來新增另一個作業。
設定 值 顯示名稱 getauthfollowers GET 的 URL /user/followers 選取 [所有作業]。 在 [輸入處理] 區段中,選取程式碼編輯器 (</>) 圖示。
複製以下內容並在原則編輯器貼上。 請確定
get-authorization-context
原則中的provider-id
和authorization-id
值分別對應至您在上述步驟中設定的認證提供者和連線名稱。 選取 [儲存]。<policies> <inbound> <base /> <get-authorization-context provider-id="github-01" authorization-id="first-connection" context-variable-name="auth-context" identity-type="managed" ignore-error="false" /> <set-header name="Authorization" exists-action="override"> <value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value> </set-header> <set-header name="User-Agent" exists-action="override"> <value>API Management</value> </set-header> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
上述原則定義包含三個部分:
- get-authorization-context 原則會參考您稍早建立的認證提供者和連線來擷取授權權杖。
- 第一個 set-header 原則會使用擷取的授權權杖來建立 HTTP 標頭。
- 第二個 set-header 原則會建立
User-Agent
標頭 (GitHub API 需求)。
步驟 5:測試 API
在 [測試] 索引標籤上,選取您設定的一個作業。
請選取傳送。
成功的回應會從 GitHub API 傳回使用者資料。