身分識別模型

Azure 通訊服務是與身分識別無關的服務,可提供多個優點:

  • 從身分識別管理系統重複使用現有的身分識別,且只需將它們與 Azure 通訊服務管理系統進行對應即可。
  • 提供整合彈性,因為與身分識別無關的模型可搭配現有的身分識別系統運作良好。
  • 您可將使用者的資料 (例如其名稱) 保密,因為您不需要在 Azure 通訊服務中複製它。

Azure 通訊服務身分識別模型搭配兩個主要概念運作。

使用者身分識別 / 對應

透過使用者識別碼來唯一識別使用者,這是在建立使用者時由 Azure 通訊服務所產生的使用者識別碼。 Azure 通訊服務中的身分識別無法使用外部識別碼,例如電話號碼、使用者、裝置、應用程式和 GUID。 您可免費建立 Azure 通訊服務使用者身分識別。 只有在使用者取用聊天或通話等通訊方式時,才會產生費用。 您的使用者身分識別可以在 1:1、1:N、N:1、N:N 組態中對應至 Azure 通訊服務使用者身分識別。 使用者可以使用多個裝置同時參與多個通訊工作階段。 客戶會保留及維護 Azure 通訊服務使用者身分識別與客戶的私人使用者身分識別之間的對應。 例如,客戶可以在其使用者資料表中新增 CommunicationServicesId 資料行,以儲存相關聯的 Azure 通訊服務身分識別。

存取權杖

建立使用者身分識別之後,使用者就會獲取使用存取權限參與聊天或通話通訊的功能。 例如,只有具聊天權杖的使用者可以參與聊天,而具 VoIP 權杖的使用者可以參與 VoIP 通話。 使用者可以同時擁有多個權杖。 Azure 通訊服務支援多個權杖類型,以考量需要完整存取權與有限存取權的使用者。 存取權杖具有下列屬性。

屬性 說明
身分識別 唯一識別權杖
到期 存取權杖在 1 到 24 小時期間內有效。 到期之後,存取權杖會失效,無法用來存取任何基本類型。 若要產生具有自訂有效性的權杖,請在產生權杖時指定所需的有效期間。 如果未指定自訂有效性,則權杖在 24 小時內有效。 對於一次性會議,建議使用短存留期的權杖,對於長時間使用應用程式的專員,建議使用較長存留期的權杖
範圍 scope 參數定義一組可用的非空白基本類型 (Chat/VoIP)。

存取權杖是 JSON Web 權杖 (JWT),且具有完整性保護。 也就是說,發行之後就無法變更宣告。 因此,手動變更屬性 (例如身分識別、到期或範圍) 會使存取權杖失效。 如果以失效權杖來使用基本類型,則會拒絕存取基本類型。 Azure 通訊服務支援下列存取權杖範圍。

聊天權杖範圍

支援三種類型的聊天權杖範圍。 每個權杖的權限如下所述。

  • 聊天
  • chat.join
  • chat.join.limited
功能 / 權杖範圍 聊天 chat.join chat.join.limited
建立聊天對話串 N N
使用識別碼更新聊天對話 N N
使用識別碼刪除聊天對話 N N
將參與者新增至聊天對話 Y Y
從聊天對話中移除參與者 Y Y
取得聊天對話 Y Y Y
使用識別碼取得聊天對話 Y Y Y
取得 ReadReceipt Y Y Y
建立 ReadReceipt Y Y Y
使用識別碼建立聊天對話的訊息 Y Y Y
使用訊息識別碼取得訊息 Y Y Y
使用訊息識別碼更新您自己的訊息 Y Y Y
使用訊息識別碼刪除您自己的訊息 Y Y Y
傳送輸入指標 Y Y Y
取得對話識別碼的參與者 Y Y Y

VoIP 權杖範圍

支援兩種類型的 VoIP 權杖範圍。 每個權杖的權限如下所述。

  • voip
  • voip.join
功能 / 權杖範圍 voip voip.join
啟動 VoIP 通話
當使用者已受邀加入會議室時,在 Virtual Rooms 中啟動 VoIP 通話 Y Y
加入 InProgress VoIP 通話 Y Y
當使用者已受邀加入會議室時,在 Virtual Rooms 中加入 InProgress VoIP 通話 Y Y
所有其他通話中的作業,例如靜音/取消靜音、畫面共用等等 Y Y
Virtual Rooms 中所有其他通話中的作業,例如靜音/取消靜音、畫面共用等等 由使用者角色決定 由使用者角色決定

撤銷或更新存取權杖

  • Azure 通訊服務身分識別程式庫可用於在到期時間之前撤銷存取權杖。 權杖撤銷不是立即完成。 可能需要長達 15 分鐘來傳播。
  • 移除身分識別、資源或訂用帳戶會撤銷所有存取權杖。
  • 如果要讓使用者無法存取特定功能,請撤銷所有存取權杖。 然後,發出範圍更有限的新存取權杖。
  • 輪替存取金鑰會撤銷使用先前存取金鑰所建立的所有作用中存取權杖。 在此情況下,所有身分識別都無法存取 Azure 通訊服務,必須發出新的存取權杖。

考量

  • 建議在伺服器端服務中發行存取權杖,而不是在用戶端的應用程式中發行。 理由是發行時需要存取金鑰或 Microsoft Entra 驗證。 基於安全考量,不建議與用戶端的應用程式共用秘密。
  • 用戶端應用程式應該使用可驗證用戶端的受信任服務端點。 端點應該代為發行存取權杖。 如需詳細資訊,請參閱用戶端和伺服器架構
  • 如果您將存取權杖快取到備份存放區,建議使用加密。 存取權杖是敏感性資料。 如果不保護,可能會用在惡意活動。 具有存取權杖的人員可以啟動 SDK 並存取 API。 只會根據存取權杖具有的範圍來限制可存取的 API。
  • 建議發行只具有必要範圍的存取權杖。

下一步