Azure 通訊服務是完全受控的通訊平臺,可讓開發人員在其應用程式中建置實時通訊功能。 透過搭配 Azure 通訊服務使用受控識別,您可以簡化應用程式的驗證程式,同時提高其安全性。 本文件涵蓋如何搭配 Azure 通訊服務使用受控識別。
搭配 Azure 通訊服務使用受控識別
Azure 通訊服務支援使用受控識別向服務進行驗證。 藉由使用受控識別,您就不需要管理自己的存取令牌和認證。
Azure 通訊服務資源可以指派兩種類型的身分識別:
- 系統指派的身分識別,這與您的資源相關聯,並在資源遭到刪除時隨之刪除。 您的資源只能有一個系統指派的身分識別。
- 使用者指派的身分識別,這是可指派給 Azure 通訊服務資源的 Azure 資源。 刪除資源時,不會刪除此身分識別。 您的資源可以有多個使用者指派的身分識別。
若要搭配 Azure 通訊服務使用受控識別,請遵循下列步驟:
- 將受控識別存取授與通訊服務資源。 此指派可以透過 Azure 入口網站、Azure CLI 和 Azure 通訊管理 SDK。
- 使用受控識別向 Azure 通訊服務進行驗證。 您可以透過支援受控識別的 Azure SDK 或 REST API 來完成驗證。
新增系統指派的身分識別
新增使用者指派的身分識別
將使用者指派的身分識別指派給 Azure 通訊服務資源時,必須先建立身分識別,然後將其資源標識碼新增至您的通訊服務資源。
首先,您必須建立使用者指派的受控識別資源。
根據這些指示建立使用者指派的受控識別資源。
在應用程式頁面的左側瀏覽中,向下捲動至 [設定] 群組。
選取 [身分識別]。
選取由 指派的使用者>,新增。
使用 Azure 通訊服務管理 SDK 的受控識別
您也可以使用 Azure 通訊管理 SDK,將受控識別指派給 Azure 通訊服務資源。
您可以在建立資源時或更新資源時,在資源定義中引進身分識別屬性,以達成此指派。
您可以使用適用於 .NET 的 Azure 通訊管理 SDK,在 Identity
上設定 CommunicationServiceResourceData
屬性,將受控識別指派給 Azure 通訊服務資源。
例如:
public async Task CreateResourceWithSystemAssignedManagedIdentity()
{
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();
//Create Resource group
ResourceGroupCollection rgCollection = subscription.GetResourceGroups();
// With the collection, we can create a new resource group with an specific name
string rgName = "myRgName";
AzureLocation location = AzureLocation.WestUS2;
ArmOperation<ResourceGroupResource> lro = await rgCollection.CreateOrUpdateAsync(WaitUntil.Completed, rgName, new ResourceGroupData(location));
ResourceGroupResource resourceGroup = lro.Value;
// get resource group collection
CommunicationServiceResourceCollection collection = resourceGroup.GetCommunicationServiceResources();
string communicationServiceName = "myCommunicationService";
// Create Communication Service Resource
var identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned);
CommunicationServiceResourceData data = new CommunicationServiceResourceData("global")
{
DataLocation = "UnitedStates",
Identity = identity
};
var communicationServiceLro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, communicationServiceName, data);
var resource = communicationServiceLro.Value;
}
如需使用 .NET 管理 SDK 的詳細資訊,請參閱 適用於 .NET 的 Azure 通訊管理 SDK。
如需管理資源實例的特定詳細資訊,請參閱 管理您的通訊服務資源實例。
備註
資源可以同時擁有系統指派和使用者指派的身分識別。 在這裡情況下, type
屬性為 SystemAssigned,UserAssigned
。
您也可以將 屬性指定 type
為 None
,從資源中移除所有受控識別指派。