Bibliothèque cliente Azure Communication Identity pour .NET - version 1.2.0

Azure Communication Identity gère les jetons pour Azure Communication Services.

| Code source | Documentation produitÉchantillons

Prise en main

Installer le package

Installez la bibliothèque cliente Azure Communication Identity pour .NET avec NuGet :

dotnet add package Azure.Communication.Identity

Prérequis

Vous avez besoin d’un abonnement Azure et d’une ressource Communication Service pour utiliser ce package.

Pour créer un service de communication, vous pouvez utiliser le portail Azure, le Azure PowerShell ou la bibliothèque cliente de gestion .NET.

Authentifier le client

Le client d’identité peut être authentifié à l’aide d’une chaîne de connexion acquise à partir d’une ressource de communication Azure dans le portail Azure.

// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationIdentityClient(connectionString);

Vous pouvez également utiliser le point de terminaison et la clé d’accès acquis à partir d’une ressource de communication Azure dans le portail Azure.

var endpoint = new Uri("https://my-resource.communication.azure.com");
var accessKey = "<access_key>";
var client = new CommunicationIdentityClient(endpoint, new AzureKeyCredential(accessKey));

Les clients ont également la possibilité de s’authentifier à l’aide d’un jeton Active Directory valide.

var endpoint = new Uri("https://my-resource.communication.azure.com");
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(endpoint, tokenCredential);

Concepts clés

CommunicationIdentityClient fournit les fonctionnalités permettant de gérer les jetons d’accès utilisateur : en créer de nouveaux et les révoquer.

Sécurité des threads

Nous garantissons que toutes les méthodes de instance client sont sécurisées pour les threads et indépendantes les unes des autres (recommandations). Cela garantit que la recommandation de réutilisation des instances clientes est toujours sécurisée, même entre les threads.

Concepts supplémentaires

Options clientes | Accès à la réponse | Opérations de longue durée | Gestion des défaillances | Diagnostics | Moqueur | Durée de vie du client

Exemples

Création d’un utilisateur

Response<CommunicationUserIdentifier> userResponse = await client.CreateUserAsync();
CommunicationUserIdentifier user = userResponse.Value;
Console.WriteLine($"User id: {user.Id}");

Obtention d’un jeton pour un utilisateur existant

Response<AccessToken> tokenResponse = await client.GetTokenAsync(user, scopes: new[] { CommunicationTokenScope.Chat });
string token = tokenResponse.Value.Token;
DateTimeOffset expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"Token: {token}");
Console.WriteLine($"Expires On: {expiresOn}");

Il est également possible de créer un jeton d’accès Communication Identity en personnalisant l’heure d’expiration. La période de validité du jeton doit être comprise dans la plage [1,24] heures. Si elle n’est pas fournie, la valeur par défaut de 24 heures est utilisée.

TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
Response<AccessToken> tokenResponse = await client.GetTokenAsync(user, scopes: new[] { CommunicationTokenScope.Chat }, tokenExpiresIn);
string token = tokenResponse.Value.Token;
DateTimeOffset expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"Token: {token}");
Console.WriteLine($"Expires On: {expiresOn}");

Création d’un utilisateur et d’un jeton dans la même demande

Response<CommunicationUserIdentifierAndToken> response = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.Chat });
var (user, token) = response.Value;
Console.WriteLine($"User id: {user.Id}");
Console.WriteLine($"Token: {token.Token}");

Il est également possible de créer un jeton d’accès Communication Identity en personnalisant l’heure d’expiration. La période de validité du jeton doit être comprise dans la plage [1,24] heures. Si elle n’est pas fournie, la valeur par défaut de 24 heures est utilisée.

TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
Response<CommunicationUserIdentifierAndToken> response = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.Chat }, tokenExpiresIn);
var (user, token) = response.Value;
Console.WriteLine($"User id: {user.Id}");
Console.WriteLine($"Token: {token.Token}");

Révocation des jetons d’un utilisateur

Si les jetons d’un utilisateur sont compromis ou doivent être révoqués :

Response revokeResponse = await client.RevokeTokensAsync(user);

Suppression d'un utilisateur

Response deleteResponse = await client.DeleteUserAsync(user);

Échange d’un jeton d’accès Azure AD d’un utilisateur Teams pour un jeton d’accès d’identité de communication

Peut CommunicationIdentityClient être utilisé pour échanger un jeton d’accès Azure AD d’un utilisateur Teams contre un nouveau jeton d’accès Communication Identity avec une heure d’expiration correspondante.

La GetTokenForTeamsUser fonction accepte les paramètres suivants encapsulés dans le sac d’options GetTokenForTeamsUserOptions :

  • teamsUserAadToken Jeton d’accès Azure Active Directory d’un utilisateur Teams
  • clientId ID client d’une application Azure AD à vérifier par rapport à la revendication appId dans le jeton d’accès Azure AD
  • userObjectId ID d’objet d’un utilisateur Azure AD (utilisateur Teams) à vérifier par rapport à la revendication OID dans le jeton d’accès Azure AD
Response<AccessToken> tokenResponse = await client.GetTokenForTeamsUserAsync(new GetTokenForTeamsUserOptions(teamsUserAadToken, clientId, userObjectId));
string token = tokenResponse.Value.Token;
Console.WriteLine($"Token: {token}");

Dépannage

Toutes les opérations du service de jeton utilisateur lèvent une exception RequestFailedException en cas d’échec.

// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationIdentityClient(connectionString);

try
{
    Response<CommunicationUserIdentifier> response = await client.CreateUserAsync();
}
catch (RequestFailedException ex)
{
    Console.WriteLine(ex.Message);
}

Étapes suivantes

En savoir plus sur Les jetons d’accès utilisateur de communication

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, consultez cla.microsoft.com.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.