適用於:所有 API 管理 層
在本文中,您將瞭解如何在 API 管理 中建立受控 連線 ,並呼叫需要 OAuth 2.0 權杖的 GitHub API。 此範例使用授權碼授予類型。
您將學習如何:
- 在 GitHub 中註冊應用程式
- 在 API 管理 中設定認證提供者
- 設定連線
- 在 API 管理 中建立 API 並設定原則
- 在 API 管理 中測試您的 GitHub API
先決條件
- GitHub 帳戶。
- 執行中的 API 管理服務實例。 如果你需要,可以 建立一個 Azure API Management 實例。
- 在 API 管理 實例中啟用 API 管理 的 系統指派受控識別 。
步驟 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 中使用的 客戶端 ID。
選取 [產生新的用戶端密碼]。 複製秘密,但這個秘密不會再顯示。 你在第二步配置密鑰。
步驟 2:在 API 管理 中設定認證提供者
登入 Azure 入口網站 ,並移至您的 API 管理實例。
在左側功能表中,選取 API> 認證管理員>+ 建立。
在 建立憑證提供者時,請輸入以下設定:
設定 價值觀 認證提供者名稱 您選擇的名稱,例如 github-01 身分識別提供者 選取 [GitHub] 撥款類型 選取 [授權碼] 用戶端識別碼 貼上您先前從應用程式註冊複製的值 客戶端密碼 貼上您先前從應用程式註冊複製的值 Scope 在此範例中,請將範圍設定為 User 選取 ,創建。
當被提示時,請檢視顯示的 OAuth 重定向網址,並選擇 「是 」以確認它是否與你在 GitHub 應用程式註冊時輸入的網址相符。
步驟 3:設定連線
在 [連線] 索引標籤上,完成連線至提供者的步驟。
備註
當您設定連線時,API 管理 預設會設定 存取原則 ,以啟用執行個體系統指派的受控識別的存取。 此存取權對於此範例來說已經足夠了。 您可以視需要新增其他存取原則。
- 輸入 連線名稱,然後選取 儲存。
- 在 [步驟 2:登入連線 (針對授權碼授與類型)] 下,選取 [登入] 按鈕。 完成與身份驗證提供者授權存取的操作,並返回 API 管理介面。
- 在 [ 步驟 3:判斷誰將有權存取此連線 (存取原則)] 底下,會列出受控識別成員。 新增其他成員是選擇性的,視您的案例而定。
- 選取 [完成]。
新連線會出現在連線清單中,並顯示「 已連線」狀態。 如果您想要為認證提供者建立另一個連線,請完成上述步驟。
小提示
使用 Azure 入口網站隨時新增、更新或刪除認證提供者的連線。 如需詳細資訊,請參閱 設定多個連線。
步驟 4:在 API 管理 中建立 API 並設定原則
登入 Azure 入口網站 ,並移至您的 API 管理實例。
在左側功能表中,選取 [API>>API + 新增 API]。
選取 HTTP 並輸入下列設定,然後選取 建立。
Setting 價值觀 顯示名稱 github用戶 Web 服務 URL https://api.github.comAPI URL 尾碼 github用戶 進入新的 API,選擇 新增操作。 輸入下列設定,然後選取 [儲存]。
Setting 價值觀 顯示名稱 getauthdata GET 的 URL /user
請依照上述步驟,使用下列設定新增另一個作業。
Setting 價值觀 顯示名稱 getauthfollowers GET 的 URL /用戶/關注者 選取 所有作業。 在 [傳入處理 ] 區段中,選取 (</>) (程式碼編輯器) 圖示。
將以下程式碼複製貼上至政策編輯器中。 請確定
provider-id原則中的authorization-id和get-authorization-context值分別對應於您在上述步驟中設定的認證提供者和連線的名稱。 選取 [儲存]。<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 傳回使用者資料。