分享方式:


使用適用於 Azure SignalR Service 的 Microsoft Entra ID 授權存取

Azure SignalR Service 支援使用 Microsoft Entra ID 授權資源要求。 透過 Microsoft Entra ID,您可以使用角色型存取控制 (RBAC) 授與安全性主體權限。 安全性主體是一種使用者/資源群組、應用程式或服務主體,例如系統指派的身分識別和使用者指派的身分識別。

Microsoft Entra ID 會驗證安全性主體,並傳回 OAuth 2.0 權杖。 接著就可以使用權杖,針對 Azure SignalR Service 資源授權要求。

使用 Microsoft Entra ID 針對 Azure SignalR Service 授權要求,相較於存取金鑰授權,可提供更優異的安全性,也更容易使用。 強烈建議您盡可能使用 Microsoft Entra ID 進行授權,因為它可確保使用最低必要權限進行存取。

重要

停用本機驗證可能會產生下列後果:

  • 目前的這組存取金鑰會永久刪除。
  • 使用目前這組存取金鑰簽署的權杖將會變成無法使用。

Microsoft Entra ID 的概觀

當安全性主體嘗試存取 Azure SignalR Service 資源時,要求必須獲得授權。 使用 Microsoft Entra ID 取得資源的存取權,需要兩個步驟:

  1. Microsoft Entra ID 會驗證安全性主體,然後傳回 OAuth 2.0 權杖。
  2. 權杖會當成要求的一部分傳送至 Azure SignalR Service 資源,以授權要求。

使用 Microsoft Entra ID 進行用戶端驗證

當您使用存取金鑰時,應用程式伺服器 (或函數應用程式) 和 Azure SignalR Service 資源會共用金鑰。 Azure SignalR Service 會使用該共用金鑰來驗證用戶端連線要求。

當您使用 Microsoft Entra ID 時,就沒有共用金鑰。 Azure SignalR Service 會改用暫時存取金鑰來簽署用戶端連線中使用的權杖。 工作流程包含四個步驟:

  1. 安全性主體需要 Microsoft Entra ID 的 OAuth 2.0 權杖,才能自行驗證。
  2. 安全性主體會呼叫 SignalR 驗證 API,以取得暫時存取金鑰。
  3. 安全性主體會在交涉期間使用用戶端連線的暫時存取金鑰來簽署用戶端權杖。
  4. 用戶端會使用用戶端權杖來連線到 Azure SignalR Service 資源。

暫時存取金鑰會在 90 分鐘後到期。 建議您取得新的金鑰,並每小時輪換一次舊金鑰。

工作流程內建在 適用於應用程式伺服器的 Azure SignalR Service SDK 中。

指派 Azure 角色以取得存取權限

Microsoft Entra ID 會透過 Azure RBAC 來授與存取受保護資源的權限。 Azure SignalR Service 會定義一組 Azure 內建角色,其中包含一般用來存取 Azure SignalR Service 資源的權限集合。 您也可以定義自訂角色,以存取 Azure SignalR Service 資源。

資源範圍

在指派任何 Azure RBAC 角色給安全性主體前,您必須先決定安全性主體應具備的存取範圍。 建議您只授與允許的最小範圍。 在更廣泛的範圍內定義的 Azure RBAC 角色會由其下的資源繼承。

您可以在下列層級設定存取 Azure SignalR Service 資源的範圍,從最小範圍開始。

影響範圍 描述
個別資源 僅適用於目標資源。
資源群組 適用於資源群組中的所有資源。
訂用帳戶 適用於訂用帳戶中的所有資源。
管理群組 適用於管理群組所含的訂用帳戶中的所有資源。

Azure SignalR Service 資源的 Azure 內建角色

角色 描述 使用案例
SignalR App Server WebSocket 連線建立 API 和驗證 API 的存取權。 最常用於應用程式伺服器。
SignalR Service 擁有者 所有資料平面 API 的完整存取權,包括 REST API、WebSocket 連線建立 API 和驗證 API。 用於使用 Microsoft Entra ID 在無伺服器模式中進行授權,因為它需求 REST API 權限和驗證 API 權限。
SignalR REST API 擁有者 資料平面 REST API 的完整存取權。 通常用來撰寫工具以管理連線和群組,但建立連線或呼叫驗證 API。
SignalR REST API 讀取者 資料平面 REST API 的唯讀存取權。 通常用來撰寫呼叫 Azure SignalR Service 資料平面唯讀 REST API 的監視工具。

下一步