分享方式:


關於 API 認證和認證管理員

適用於:所有 APIM 層

為了協助您管理後端 API 的存取權,您的 APIM 執行個體包含認證管理員。 使用認證管理員來管理、儲存及控制來自 APIM 執行個體之 API 認證的存取權。

注意

  • 目前,您可以使用認證管理員設定和管理後端 OAuth 2.0 API 的連線 (先前稱為授權)。
  • 認證管理員不會引進任何重大變更。 OAuth 2.0 認證提供者和資源提供者會使用現有的 APIM 授權 API 和資源提供者。

注意

目前,此功能無法在工作區中使用。

OAuth 2.0 API 的受控連線

使用認證管理員,您可以大幅簡化跨一或多個使用 OAuth 2.0 的後端或 SaaS 服務驗證及授權使用者、群組及服務主體的流程。 使用 APIM 的認證管理員,輕鬆地設定 OAuth 2.0、同意、取得權杖、在認證存放區中快取權杖,以及重新整理權杖,而不需撰寫程式碼。 使用存取原則,將驗證委派給 APIM 執行個體、服務主體、使用者或群組。 如需 OAuth 2.0 的背景,請參閱 Microsoft 身分識別平台和 OAuth 2.0 授權碼流程

此功能可讓 API 在有無訂用帳戶金鑰的情況下公開、為後端服務使用 OAuth 2.0 授權,並透過服務整合來降低用於提升、實作及維護安全性功能的開發成本。

API 管理認證管理員和支援的 SaaS 識別提供者的圖表。

範例使用案例

使用 APIM 中管理的 OAuth 連線,客戶可以輕鬆地連線到使用 OAuth 2.0 的 SaaS 提供者或後端服務。 以下列出一些範例:

  • 透過附加儲存的授權權杖和 Proxy 處理要求,輕鬆連線到 SaaS 後端

  • 透過連結授權權杖,通過 Proxy 處理對 Azure App Service Web 應用程式或 Azure Functions 後端的要求,其稍後可將要求傳送至套用轉換邏輯的 SaaS 後端

  • 透過連結多個存取權杖來輕鬆執行同盟,以通過 Proxy 處理對 GraphQL 同盟後端的要求

  • 公開擷取權杖端點、取得快取的權杖,以及代表使用者從任何計算 (例如主控台應用程式或 Kubernetes 精靈) 呼叫 SaaS 後端。 以支援的語言合併您最愛的 SaaS SDK。

  • 連線到多個 SaaS 後端時的 Azure Functions 自動案例。

  • Durable Functions 更接近具有 SaaS 連線的 Logic Apps。

  • 透過 OAuth 2.0 連線,APIM 中的每個 API 都可作為 Logic Apps 自訂連接器。

認證管理員如何運作?

認證管理員中的權杖認證包含兩個部分:管理執行階段

  • 認證管理員中的管理部分會負責設定 OAuth 2.0 權杖的認證提供者、啟用識別提供者的同意流程,以及設定認證提供者的一或多個連線以存取認證。 如需詳細資訊,請參閱連線管理

  • 執行階段組件使用 get-authorization-context 原則來擷取與儲存連線的存取和重新整理權杖。 當呼叫進入 APIM 並執行 get-authorization-context 原則時,會先驗證現有授權權杖是否有效。 如果授權權杖已過期,APIM 會使用 OAuth 2.0 流程,從認證提供者重新整理預存權杖。 然後,使用存取權杖來授與後端服務的存取權。 如需詳細資訊,請參閱連線執行階段

何時使用認證管理員?

以下是使用認證管理員的三個情節。

設定案例

設定認證提供者和連線之後,API 管理員可以測試連線。 API 管理員會設定測試後端 OAuth API,以使用執行個體的受控識別來使用 get-authorization-context 原則。 然後,API 管理員可以藉由呼叫測試 API 來測試連線。

認證管理員的初始設定案例的圖表。

自動情節

根據預設,建立連線時,會針對 APIM 執行個體的受控識別預先設定存取原則和連線。 若要使用這類連線,不同的使用者可能會登入用戶端應用程式,例如靜態 Web 應用程式,然後透過 APIM 呼叫公開的後端 API。 若要進行此呼叫,會使用 get-authorization-context 原則套用連線。 由於 API 呼叫會使用與使用者內容無關的預先設定連線,因此會將相同的資料傳回給所有使用者。

認證管理員的受控識別案例的圖表。

已出席 (使用者委派) 案例

若要為用戶端應用程式的使用者啟用簡化的驗證體驗,例如靜態 Web 應用程式,呼叫需要使用者內容的後端 SaaS API,您可以代表 Microsoft Entra 使用者或群組身分識別啟用連線的存取權。 在此情況下,已設定的使用者只需要登入並提供同意一次,而 APIM 執行個體會在之後建立和管理其連線。 當 APIM 取得要轉送至外部服務的傳入呼叫時,它會將存取權杖從連線附加至要求。 當 API 請求和回應面向個人時 (例如,擷取使用者特定的設定檔資訊),這是理想的選擇。

認證管理員的使用者委派案例的圖表。

如何設定認證管理員?

需求

  • 必須為 APIM 執行個體啟用受控系統指派身分識別。

  • APIM 執行個體必須在連接埠 443 (HTTPS) 上輸出連線到網際網路。

可用性

  • 所有 APIM 服務層級

  • 自我裝載閘道不支援

  • 主權雲端或以下區域不支援:australiacentral, australiacentral2, indiacentral

逐步說明範例

安全性考量

存取權杖和其他祕密 (例如,用戶端密碼) 會以信封加密的形式進行加密,並儲存在多租用戶的內部儲存體。 資料會使用每個資料唯一的金鑰,以 AES-128 加密。 那些金鑰會以非對稱方式,對儲存在 Azure Key Vault 的主要憑證進行加密,且每月輪替。

限制

資源 限制
每個服務執行個體的認證提供者數量上限 1,000
每個認證提供者的連線數目上限 10,000
每個連線的存取原則數目上限 100
每個連線每分鐘授權要求數目上限 250

常見問題集 (FAQ)

何時會重新整理存取權杖?

針對類型授權碼的連線,存取權杖會重新整理如下:在執行階段執行 get-authorization-context 原則時,APIM 會檢查儲存的存取權杖是否有效。 如果權杖已過期或即將到期,APIM 會使用重新整理權杖,從已設定的識別提供者擷取新的存取權杖和新的重新整理權杖。 若重新整理權杖已過期,即會擲回錯誤,而且連線必須先重新授權,才能運作授權。

若用戶端密碼在識別提供者端到期,會發生什麼事?

APIM 無法在執行階段擷取新的權杖,而且會發生錯誤。

  • 若連線類型為授權代碼,則必須在連線提供者層級上更新用戶端密碼。

  • 如果連線的類型為用戶端認證,則必須在連線層級上更新用戶端密碼。

此功能是否支援在 VNet 中執行 APIM?

是,只要為 AzureConnectors 服務標籤啟用連接埠 443 上的輸出連線即可。 如需詳細資訊,請參閱虛擬網路設定參考

若認證提供者遭到刪除,會發生什麼事?

也會刪除所有基礎連接和存取原則。

存取權杖是否由 APIM 進行快取?

在傳統和 v2 服務層中,APIM 執行個體會快取存取權杖,直到權杖到期前 3 分鐘為止。 如果存取權杖距離到期時間不到 3 分鐘,快取的時間將會是存取權杖到期為止。

不會在使用量階層中快取存取權杖。