Azure SignalR 服務的受控識別

在 Azure SignalR Service 中,您可以使用來自 Microsoft Entra ID 的受控識別來:

  • 取得存取權杖。
  • 存取 Azure 金鑰保存庫中的秘密。

服務僅支援一個受控識別。 您可以建立系統指派或使用者指派的身分識別。 系統指派的身分識別專用於您的 Azure SignalR Service 實例,並在您刪除實例時刪除。 使用者指派的身分識別是由 Azure SignalR Service 資源所獨立管理。

本文說明如何建立 Azure SignalR 服務的受控識別,以及如何在無伺服器案例中使用。

必要條件

若要使用受控識別,您必須具有下列專案:

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶
  • Azure SignalR 服務資源。
  • 您想要存取的上游資源,例如 Azure 金鑰保存庫 資源。
  • Azure Functions 應用程式(函式應用程式)。

將受控識別新增至 Azure SignalR 服務

您可以在 Azure 入口網站 或 Azure CLI 中將受控識別新增至 Azure SignalR Service。 本文說明如何在Azure 入口網站中將受控識別新增至 Azure SignalR Service。

新增系統指派的身分識別

若要將系統指派的受控識別新增至 Azure SignalR Service 實例:

  1. 在Azure 入口網站中,流覽至您的 Azure SignalR Service 實例。

  2. 選取 [身分識別]。

  3. 在 [ 系統指派] 索引 標籤上,將 [狀態 ] 切換 為 [ 開啟 ]。

    Screenshot that shows selections for adding a system-assigned identity in the portal.

  4. 選取 [儲存]。

  5. 按一下 [是] 以確認變更。

新增使用者指派的身分識別

若要將使用者指派的身分識別新增至 Azure SignalR Service 實例,您需要建立身分識別,然後將它新增至服務。

  1. 根據 這些指示 建立使用者指派的受控識別資源。

  2. 在Azure 入口網站中,流覽至您的 Azure SignalR Service 實例。

  3. 選取 [身分識別]。

  4. 在 [ 使用者指派] 索引 標籤上,選取 [ 新增 ]。

  5. 在 [ 使用者指派的受控識別] 下拉式功能表上,選取身分識別。

    Screenshot that shows selections for adding a user-assigned identity in the portal.

  6. 選取新增

在無伺服器案例中使用受控識別

Azure SignalR Service 是完全受控的服務。 它會使用受控識別來取得存取權杖。 在無伺服器案例中,服務會將存取權杖新增至 Authorization 上游要求中的標頭。

在上游設定中啟用受控識別驗證

將系統指派的 身分識別或 使用者指派 的身分識別新增 至 Azure SignalR Service 實例之後,您可以在上游端點設定中啟用受控識別驗證:

  1. 在Azure 入口網站中,流覽至您的 Azure SignalR Service 實例。

  2. 從功能表中選取 [設定]

  3. 選取無 伺服器服務模式。

  4. 在 [ 新增上游 URL 模式 ] 文字方塊中,輸入上游端點 URL 模式。 請參閱 URL 範本設定

  5. 選取 [新增一個上游設定 ],然後選取任何星號。

    Screenshot that shows Azure SignalR Service settings for adding an upstream URL pattern.

  6. 上游設定 中,設定上游端點設定。

    Screenshot of upstream settings for Azure SignalR Service.

  7. 在受控識別驗證設定中,針對 發行的權杖 中的 [物件],您可以指定目標 資源 。 資源 將會成為 aud 所取得存取權杖中的宣告,其可作為上游端點驗證的一部分。 資源可以是下列其中一種格式:

    • 服務主體的應用程式 (用戶端) 識別碼。
    • 服務主體的應用程式識別碼 URI。

    重要

    使用空的資源會以動作方式取得 Microsoft Graph 的權杖目標。 和今天一樣,Microsoft Graph 會啟用權杖加密,因此應用程式無法驗證 Microsoft Graph 以外的權杖。 在常見的做法中,您應該一律建立服務主體來代表上游目標。 並設定 您所建立服務主體的應用程式識別碼或 應用程式識別碼 URI

函式應用程式中的驗證

您可以使用 Azure 入口網站,輕鬆地設定函式應用程式的存取驗證,而不需變更程式碼:

  1. 在Azure 入口網站中,移至函式應用程式。

  2. 從選單中選擇 驗證

  3. 選取 [ 新增識別提供者 ]。

  4. 在 [ 基本] 索引 標籤的 [識別提供者 ] 下拉式清單中,選取 [Microsoft ]。

  5. [要求未通過驗證 時採取的動作] 中,選取 [ 使用 Microsoft Entra ID 登入]。

  6. 預設會選取建立新註冊的選項。 您可以變更註冊的名稱。 如需啟用 Microsoft Entra 提供者的詳細資訊,請參閱 設定 App Service 或 Azure Functions 應用程式以使用 Microsoft Entra ID 登入

    Screenshot that shows basic information for adding an identity provider.

  7. 移至 Azure SignalR 服務,並遵循 步驟 來新增系統指派的身分識別或使用者指派的身分識別。

  8. 在 Azure SignalR Service 中,移至 [上游設定 ],然後選取 [使用受控識別 ],然後 從現有的應用程式 選取 [選取]。 選取您先前建立的應用程式。

設定這些設定之後,函式應用程式將會拒絕標頭中沒有存取權杖的要求。

驗證存取權杖

如果您未使用 WebApp 或 Azure 函式,您也可以驗證權杖。

標頭中的 Authorization 權杖是 Microsoft 身分識別平臺存取權杖

若要驗證存取權杖,您的應用程式也應該驗證物件和簽署權杖。 這些權杖必須根據 OpenID 探索檔中的值進行驗證。 如需範例,請參閱與 租使用者無關的檔 版本。

Microsoft Entra 中介軟體具有用來驗證存取權杖的內建功能。 您可以流覽 Microsoft 身分識別平臺程式碼範例 ,以尋找您選擇的語言。

示範如何處理權杖驗證的程式庫和程式碼範例可供使用。 也有數個開放原始碼合作夥伴程式庫可供 JSON Web 權杖 (JWT) 驗證使用。 幾乎每個平臺和語言都有至少一個選項。 如需 Microsoft Entra 驗證程式庫和程式碼範例的詳細資訊,請參閱 Microsoft 身分識別平臺驗證程式庫

使用受控識別進行金鑰保存庫參考

Azure SignalR Service 可以使用受控識別來存取金鑰保存庫以取得秘密。

  1. 將系統指派的身 分識別或 使用者指派的 身分識別新增至您的 Azure SignalR Service 實例。
  2. 在 金鑰保存庫 的存取原則中授與受控識別的秘密讀取權限。 請參閱 使用 Azure 入口網站指派金鑰保存庫存取原則。

目前,您可以使用這項功能來 參考上游 URL 模式 中的秘密。

下一步