Créer et gérer des jetons d’accès
Les jetons d’accès permettent aux kits de développement logiciel (SDK) d’Azure Communication Services de s’authentifier directement auprès d’Azure Communication Services en tant qu’identité particulière. Vous devez créer des jetons d’accès si vous voulez que vos utilisateurs rejoignent un appel ou une conversation dans votre application.
Cet article explique comment utiliser les kits de développement logiciel (SDK) Azure Communication Services pour créer des identités et gérer vos jetons d’accès. Pour les cas d’usage en production, nous vous recommandons de générer des jetons d’accès sur un service côté serveur, comme décrit dans Conception d’architecture mobile.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une ressource Communication Services active et la chaîne de connexion. Créer une ressource Communication Services
- Installez Azure CLI.
Configurer votre environnement
Ajouter l’extension
Ajoutez l’extension Azure Communication Services pour Azure CLI à l’aide de la commande az extension
.
az extension add --name communication
Connectez-vous à Azure CLI
Connectez-vous à Azure CLI. Vous pouvez vous connecter en exécutant la commande az login
depuis le terminal, puis fournir vos informations d’identification.
(Facultatif) Utilisez les opérations d’identité Azure CLI sans passer dans une chaîne de connexion
Vous pouvez configurer la variable d’environnement AZURE_COMMUNICATION_CONNECTION_STRING
pour utiliser les opérations d’identité Azure CLI sans avoir à utiliser --connection_string
pour passer dans la chaîne de connexion. Pour configurer une variable d’environnement, ouvrez une fenêtre de console, puis sélectionnez votre système d’exploitation dans les onglets suivants. Remplacez <yourConnectionString>
par votre chaîne de connexion.
Ouvrez une fenêtre de console et entrez la commande suivante :
setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"
Après l’ajout de la variable d’environnement, il est possible que vous deviez redémarrer tous les programmes en cours d’exécution qui doivent lire la variable d’environnement, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.
Stocker votre jeton d’accès dans une variable d’environnement
Pour configurer une variable d’environnement, ouvrez une fenêtre de console, puis sélectionnez votre système d’exploitation dans les onglets ci-dessous. Remplacez <yourAccessToken>
par votre jeton d’accès réel.
Ouvrez une fenêtre de console et entrez la commande suivante :
setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"
Après l’ajout de la variable d’environnement, il est possible que vous deviez redémarrer tous les programmes en cours d’exécution qui doivent lire la variable d’environnement, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.
Opérations
Créer une identité
Pour créer des jetons d’accès, vous avez besoin d’une identité. Azure Communication Services gère un répertoire LID (Lightweight Identity Directory) à cet effet. Utilisez la commande user create
pour créer une entrée dans l’annuaire avec une valeur Id
unique. L’identité sera demandée ultérieurement pour émettre des jetons d’accès.
az communication identity user create --connection-string "<yourConnectionString>"
- Remplacez
<yourConnectionString>
par votre chaîne de connexion.
Créer une identité et émettre un jeton d’accès dans la même requête
Exécutez la commande suivante pour créer une identité Communication Services et émettre un jeton d’accès pour celle-ci en même temps. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans S’authentifier auprès d’Azure Communication Services.
az communication identity token issue --scope chat --connection-string "<yourConnectionString>"
Effectuez ce remplacement dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion.
Émettre des jetons d’accès
Exécutez la commande pour émettre un jeton d’accès pour votre identité Communication Services. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans S’authentifier auprès d’Azure Communication Services.
az communication identity token issue --scope chat --user "<userId>" --connection-string "<yourConnectionString>"
Effectuez ce remplacement dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion. - Remplacez
<userId>
par votre userId.
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption expérimentée par les utilisateurs de votre application. La propriété de réponse expires_on
indique la durée de vie du jeton d’accès.
Émettre un jeton d’accès avec plusieurs étendues
Exécutez la commande suivante pour émettre un jeton d’accès avec plusieurs étendues pour votre identité Communication Services. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans le modèle d’identité.
az communication identity token issue --scope chat voip --user "<userId>" --connection-string "<yourConnectionString>"
Effectuez ce remplacement dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion. - Remplacez
<userId>
par votre userId.
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption expérimentée par les utilisateurs de votre application. La propriété de réponse expires_on
indique la durée de vie du jeton d’accès.
Échanger un jeton d’accès Microsoft Entra de l’utilisateur Teams contre un jeton d’accès Communication Identity
Utilisez la commande token get-for-teams-user
afin d’émettre un jeton d’accès pour l’utilisateur Teams qui peut être utilisé avec les SDK Azure Communication Services.
az communication identity token get-for-teams-user --aad-token "<yourAadToken>" --client "<yourAadApplication>" --aad-user "<yourAadUser>" --connection-string "<yourConnectionString>"
Effectuez ce remplacement dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion. - Remplacez
<yourAadUser>
par votre userId Microsoft Entra. - Remplacez
<yourAadApplication>
par l’ID de votre application Microsoft Entra. - Remplacez
<yourAadToken>
par votre jeton d’accès Microsoft Entra.
Révoquer des jetons d’accès
Vous devrez peut-être révoquer explicitement un jeton d’accès. Par exemple, vous pouvez le faire lorsque les utilisateurs de l’application modifient le mot de passe qu’ils utilisent pour s’authentifier auprès de votre service. La commande token revoke
invalide tous les jetons d’accès actifs qui ont été émis pour l’identité.
az communication identity token revoke --user "<userId>" --connection-string "<yourConnectionString>"
Effectuez ce remplacement dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion. - Remplacez
<userId>
par votre userId.
Supprimer une identité
Lorsque vous supprimez une identité, vous révoquez tous les jetons d’accès actifs et vous empêchez les nouvelles émissions de jetons d’accès pour l’identité. Cela supprime également tout contenu persistant associé à l’identité.
az communication identity user delete --user "<userId>" --connection-string "<yourConnectionString>"
Effectuez le remplacement suivant dans le code :
- Remplacez
<yourConnectionString>
par votre chaîne de connexion. - Remplacez
<userId>
par votre userId.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Dernière version du kit SDK .NET Core pour votre système d’exploitation.
- Une ressource Communication Services active et la chaîne de connexion. Créez une ressource Communication Services.
Code final
Recherchez le code finalisé sur GitHub.
Configurer votre environnement
Créer une application C#
Dans une fenêtre d’invite de commandes (par exemple cmd, PowerShell ou Bash), exécutez la commande
dotnet new
pour créer une application console avec le nomAccessTokensQuickstart
. Cette commande crée un projet C# Hello World simple avec un seul fichier source :Program.cs
.dotnet new console -o AccessTokensQuickstart
Remplacez votre répertoire par le dossier d’application que vous venez de créer, puis utilisez la commande
dotnet build
pour compiler votre application.cd AccessTokensQuickstart dotnet build
Une sortie simple
Hello World
s’affiche. Si elle s’affiche correctement, votre configuration fonctionne et vous pouvez commencer à écrire votre code Azure Communication Services.
Installer le package
Alors que vous êtes toujours dans le répertoire de l’application, installez le package de la bibliothèque Azure Communication Services Identity pour .NET en utilisant la commande dotnet add package
.
dotnet add package Azure.Communication.Identity
Configurer le framework d’application
Dans le répertoire du projet, procédez comme suit :
- Ouvrez le fichier
Program.cs
dans un éditeur de texte. - Ajoutez une directive
using
pour inclure l’espace de nomsAzure.Communication.Identity
. - Pour prendre en charge le code asynchrone, mettez à jour la déclaration de méthode
Main
.
Pour commencer, exécutez le code suivant :
using System;
using Azure;
using Azure.Core;
using Azure.Communication.Identity;
namespace AccessTokensQuickstart
{
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
Console.WriteLine("Azure Communication Services - Access Tokens Quickstart");
// Quickstart code goes here
}
}
}
Authentifier le client
Initialisez CommunicationIdentityClient
avec votre chaîne de connexion. Le code suivant, que vous ajoutez à la méthode Main
, récupère la chaîne de connexion pour la ressource à partir d’une variable d’environnement nommée COMMUNICATION_SERVICES_CONNECTION_STRING
.
Pour plus d’informations, consultez Créer et gérer des ressources Communication Services > Stocker votre chaîne de connexion.
// This code demonstrates how to retrieve your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
var client = new CommunicationIdentityClient(connectionString);
Vous pouvez également séparer le point de terminaison et la clé d’accès en exécutant le code suivant :
// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
string endpoint = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ENDPOINT");
string accessKey = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ACCESSKEY");
var client = new CommunicationIdentityClient(new Uri(endpoint), new AzureKeyCredential(accessKey));
Si vous avez déjà configuré une application Microsoft Entra, vous pouvez vous authentifier à l’aide de Microsoft Entra ID.
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);
Créer une identité
Pour créer des jetons d’accès, vous avez besoin d’une identité. Azure Communication Services gère un répertoire LID (Lightweight Identity Directory) à cet effet. Utilisez la méthode createUser
pour créer une entrée, avec une valeur Id
unique, dans le répertoire. Utilisez plus tard l’identité pour émettre des jetons d’accès.
var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Stockez l’identité reçue avec un mappage aux utilisateurs de votre application (par exemple, en la stockant dans la base de données de votre serveur d’applications).
Émettre un jeton d’accès
Une fois que vous avez une identité Communication Services, utilisez la méthode GetToken
pour émettre un jeton d’accès pour celle-ci. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans le modèle d’identité. Une nouvelle instance de communicationUser
peut également être construite sur la base de la représentation sous forme de chaîne de l’identité Azure Communication Services.
// Issue an access token with a validity of 24 hours and the "voip" scope for an identity
var tokenResponse = await client.GetTokenAsync(identity, scopes: new [] { CommunicationTokenScope.VoIP });
// Get the token from the response
var token = tokenResponse.Value.Token;
var expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption de l’expérience utilisateur de votre application. La propriété expiresOn
indique la durée de vie du jeton d’accès.
Définir une heure d’expiration de jeton personnalisé
L’heure d’expiration du jeton par défaut est de 24 heures, mais vous pouvez la configurer en fournissant une valeur comprise entre une heure et 24 heures au paramètre facultatif tokenExpiresIn
. Lors de la demande d’un nouveau jeton, spécifiez la durée normale attendue d’une session de communication pour l’heure d’expiration du jeton.
// Issue an access token with a validity of an hour and the "voip" scope for an identity
TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
CommunicationTokenScope[] scopes = new[] { CommunicationTokenScope.VoIP };
var tokenResponse = await client.GetTokenAsync(identity, scopes, tokenExpiresIn);
Créer une identité et émettre un jeton dans la même requête
Vous pouvez utiliser la méthode CreateUserAndTokenAsync
pour créer une identité Communication Services et émettre un jeton d’accès pour celle-ci en même temps. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans S’authentifier auprès d’Azure Communication Services.
// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
var identityAndTokenResponse = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.VoIP });
// Retrieve the identity, token, and expiration date from the response
var identity = identityAndTokenResponse.Value.User;
var token = identityAndTokenResponse.Value.AccessToken.Token;
var expiresOn = identityAndTokenResponse.Value.AccessToken.ExpiresOn;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);
Actualiser un jeton d’accès
Pour actualiser un jeton d’accès, transmettez une instance de l’objet CommunicationUserIdentifier
dans GetTokenAsync
. Si vous avez stocké cet élément Id
et que vous devez créer un CommunicationUserIdentifier
, vous pouvez le faire en passant votre Id
stocké dans le constructeur CommunicationUserIdentifier
, comme suit :
var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });
Révoquer des jetons d’accès
Vous devrez peut-être révoquer explicitement un jeton d’accès. Par exemple, lorsque les utilisateurs de l’application modifient le mot de passe qu’ils utilisent pour s’authentifier auprès de votre service. La méthode RevokeTokensAsync
invalide tous les jetons d’accès actifs qui ont été émis pour l’identité.
await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");
Supprimer une identité
Lorsque vous supprimez une identité, vous révoquez tous les jetons d’accès actifs et vous empêchez les nouvelles émissions de jetons d’accès pour l’identité. Cela supprime également tout contenu persistant associé à l’identité.
await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");
Exécuter le code
Lorsque vous avez terminé de créer le jeton d’accès, vous pouvez exécuter l’application à partir de votre répertoire d’application à l’aide de la commande dotnet run
.
dotnet run
La sortie de l’application décrit chaque action terminée :
Azure Communication Services - Access Tokens Quickstart
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Issued an access token with 'voip' scope that expires at 10/11/2022 7:34:29 AM +00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52
Issued an access token with 'voip' scope that expires at 10/11/2022 7:34:29 AM +00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Node.js versions Active LTS et Maintenance LTS (8.11.1 et 10.14.1 recommandées).
- Une ressource Communication Services active et la chaîne de connexion. Créez une ressource Communication Services.
Code final
Recherchez le code finalisé sur GitHub.
Configurer votre environnement
Création d’une application Node.js
Dans un terminal ou une fenêtre d’invite de commandes, créez un nouveau répertoire pour votre application, puis ouvrez-le.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Exécutez
npm init -y
pour créer un fichierpackage.json
avec les paramètres par défaut.npm init -y
Installer le package
Utilisez la commande npm install
pour installer le kit de développement logiciel (SDK) Azure Communication Services Identity pour JavaScript.
npm install @azure/communication-identity@latest --save
L’option --save
répertorie la bibliothèque en tant que dépendance dans votre fichier package.json
.
Configurer le framework d’application
Créez un fichier nommé
issue-access-token.js
dans le répertoire du projet et ajoutez le code suivant :const { CommunicationIdentityClient } = require('@azure/communication-identity'); const main = async () => { console.log("Azure Communication Services - Access Tokens Quickstart") // Quickstart code goes here }; main().catch((error) => { console.log("Encountered an error"); console.log(error); })
Authentifier le client
Instanciez un CommunicationIdentityClient
avec votre chaîne de connexion. Le code suivant, que vous ajoutez à la méthode Main
, récupère la chaîne de connexion pour la ressource à partir d’une variable d’environnement nommée COMMUNICATION_SERVICES_CONNECTION_STRING
.
Pour plus d’informations, consultez Créer et gérer des ressources Communication Services > Stocker votre chaîne de connexion.
// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];
// Instantiate the identity client
const identityClient = new CommunicationIdentityClient(connectionString);
Vous pouvez également séparer le point de terminaison et la clé d’accès en exécutant le code suivant :
// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const accessKey = process.env["COMMUNICATION_SERVICES_ACCESSKEY"];
// Create the credential
const tokenCredential = new AzureKeyCredential(accessKey);
// Instantiate the identity client
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential)
Si vous avez déjà configuré une application Microsoft Entra, vous pouvez vous authentifier à l’aide de Microsoft Entra ID.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);
Créer une identité
Pour créer des jetons d’accès, vous avez besoin d’une identité. Azure Communication Services gère un répertoire LID (Lightweight Identity Directory) à cet effet. Utilisez la méthode createUser
pour créer une entrée, avec une valeur Id
unique, dans le répertoire. Vous aurez besoin de l’identité plus tard pour émettre des jetons d’accès.
let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);
Stockez l’identité reçue avec un mappage aux utilisateurs de votre application (par exemple, en la stockant dans la base de données de votre serveur d’applications).
Émettre un jeton d’accès
Avec la méthode getToken
, émettez un jeton d’accès pour votre identité Communication Services. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans le modèle d’identité. Une nouvelle instance de communicationUser
peut également être construite sur la base de la représentation sous forme de chaîne de l’identité Azure Communication Services.
// Issue an access token with a validity of 24 hours and the "voip" scope for an identity
let tokenResponse = await identityClient.getToken(identityResponse, ["voip"]);
// Get the token and its expiration date from the response
const { token, expiresOn } = tokenResponse;
console.log(`\nIssued an access token with 'voip' scope that expires at ${expiresOn}:`);
console.log(token);
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption de l’expérience utilisateur de votre application. La propriété expiresOn
indique la durée de vie du jeton d’accès.
Définir une heure d’expiration de jeton personnalisé
L’heure d’expiration du jeton par défaut est de 24 heures (1 440 minutes), mais vous pouvez la configurer en fournissant une valeur comprise entre 60 minutes and 1 440 minutes au paramètre facultatif tokenExpiresInMinutes
. Lors de la demande d’un nouveau jeton, spécifiez la durée normale attendue d’une session de communication pour l’heure d’expiration du jeton.
// Issue an access token with a validity of an hour and the "voip" scope for an identity
const tokenOptions: GetTokenOptions = { tokenExpiresInMinutes: 60 };
let tokenResponse = await identityClient.getToken
(identityResponse, ["voip"], tokenOptions);
Créer une identité et émettre un jeton dans un appel de méthode
Vous pouvez utiliser la méthode createUserAndToken
pour créer une identité Communication Services et émettre un jeton d’accès pour celle-ci en même temps. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Créez-le avec l’étendue voip
.
// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
let identityTokenResponse = await identityClient.createUserAndToken(["voip"]);
// Get the token, its expiration date, and the user from the response
const { token, expiresOn, user } = identityTokenResponse;
console.log(`\nCreated an identity with ID: ${user.communicationUserId}`);
console.log(`\nIssued an access token with 'voip' scope that expires at ${expiresOn}:`);
console.log(token);
Actualiser un jeton d’accès
Lorsque les jetons expirent, vous devez les actualiser. Pour actualiser les jetons, appelez à nouveau getToken
avec la même identité qui a été utilisée pour émettre les jetons. Vous devez également fournir les scopes
des jetons actualisés.
// Value of identityResponse represents the Azure Communication Services identity stored during identity creation and then used to issue the tokens being refreshed
let refreshedTokenResponse = await identityClient.getToken(identityResponse, ["voip"]);
Révoquer des jetons d’accès
Vous devrez peut-être révoquer un jeton d’accès. Vous devez le faire par exemple lorsque les utilisateurs de l’application modifient le mot de passe qu’ils utilisent pour s’authentifier auprès de votre service. La méthode revokeTokens
invalide tous les jetons d’accès actifs qui ont été émis pour l’identité.
await identityClient.revokeTokens(identityResponse);
console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);
Supprimer une identité
Lorsque vous supprimez une identité, vous révoquez tous les jetons d’accès actifs et vous empêchez les nouvelles émissions de jetons d’accès pour l’identité. Cela supprime également tout contenu persistant associé à l’identité.
await identityClient.deleteUser(identityResponse);
console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);
Exécuter le code
À partir d’une invite de console, accédez au répertoire contenant le fichier issue-access-token.js, puis exécutez la commande node
suivante pour exécuter l’application :
node ./issue-access-token.js
La sortie de l’application décrit chaque action terminée :
Azure Communication Services - Access Tokens Quickstart
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52
Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Python 3.8 et version ultérieure.
- Une ressource Communication Services active et la chaîne de connexion. Créez une ressource Communication Services.
Code final
Recherchez le code finalisé sur GitHub.
Configurer votre environnement
Créer une application Python
Dans un terminal ou une fenêtre d’invite de commandes, créez un nouveau répertoire pour votre application, puis ouvrez-le.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Utilisez un éditeur de texte pour créer un fichier appelé
issue-access-tokens.py
dans le répertoire racine du projet. Ajoutez ensuite la structure du programme, y compris la gestion des exceptions de base. Vous ajoutez tout le code source à ce fichier.import os from datetime import timedelta from azure.communication.identity import CommunicationIdentityClient, CommunicationUserIdentifier try: print("Azure Communication Services - Access Tokens Quickstart") # Quickstart code goes here except Exception as ex: print("Exception:") print(ex)
Installer le package
Dans le répertoire de l’application, installez le package du kit de développement logiciel (SDK) Azure Communication Services Identity pour Python à l’aide de la commande pip install
.
pip install azure-communication-identity
Authentifier le client
Instanciez un CommunicationIdentityClient
avec votre chaîne de connexion. Le code suivant, que vous ajoutez au bloc try
, récupère la chaîne de connexion pour la ressource à partir d’une variable d’environnement nommée COMMUNICATION_SERVICES_CONNECTION_STRING
.
Pour plus d’informations, consultez Créer et gérer des ressources Communication Services > Stocker votre chaîne de connexion.
# This code demonstrates how to retrieve your connection string
# from an environment variable.
connection_string = os.environ["COMMUNICATION_SERVICES_CONNECTION_STRING"]
# Instantiate the identity client
client = CommunicationIdentityClient.from_connection_string(connection_string)
Sinon, si vous avez déjà configuré une application Microsoft Entra, vous pouvez vous authentifier à l’aide de Microsoft Entra ID.
endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())
Créer une identité
Pour créer des jetons d’accès, vous avez besoin d’une identité. Azure Communication Services gère un répertoire LID (Lightweight Identity Directory) à cet effet. Utilisez la méthode create_user
pour créer une entrée, avec une valeur Id
unique, dans le répertoire. L’identité sera demandée ultérieurement pour émettre des jetons d’accès.
identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])
Stockez l’identité reçue avec un mappage aux utilisateurs de votre application (par exemple, en la stockant dans la base de données de votre serveur d’applications).
Émettre un jeton d’accès
Avec la méthode get_token
, émettez un jeton d’accès pour votre identité Communication Services. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans le modèle d’identité. Une nouvelle instance du paramètre CommunicationUserIdentifier
peut également être construite sur la base de la représentation sous forme de chaîne de l’identité Azure Communication Services.
# Issue an access token with a validity of 24 hours and the "voip" scope for an identity
token_result = client.get_token(identity, ["voip"])
print("\nIssued an access token with 'voip' scope that expires at " + token_result.expires_on + ":")
print(token_result.token)
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption de l’expérience utilisateur de votre application. La propriété de réponse expires_on
indique la durée de vie du jeton d’accès.
Définir une heure d’expiration de jeton personnalisé
L’heure d’expiration du jeton par défaut est de 24 heures, mais vous pouvez la configurer en fournissant une valeur comprise entre une heure et 24 heures au paramètre facultatif token_expires_in
. Lors de la demande d’un nouveau jeton, spécifiez la durée normale attendue d’une session de communication pour l’heure d’expiration du jeton.
# Issue an access token with a validity of an hour and the "voip" scope for an identity
token_expires_in = timedelta(hours=1)
token_result = client.get_token(identity, ["voip"], token_expires_in=token_expires_in)
Créer une identité et émettre un jeton d’accès dans la même requête
Vous pouvez utiliser la méthode create_user_and_token
pour créer une identité Communication Services et émettre un jeton d’accès pour celle-ci en même temps. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans S’authentifier auprès d’Azure Communication Services.
# Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
identity_token_result = client.create_user_and_token(["voip"])
# Get the token details from the response
identity = identity_token_result[0]
token = identity_token_result[1].token
expires_on = identity_token_result[1].expires_on
print("\nCreated an identity with ID: " + identity.properties['id'])
print("\nIssued an access token with 'voip' scope that expires at " + expires_on + ":")
print(token)
Actualiser un jeton d’accès
Pour actualiser un jeton d’accès, utilisez l’objet CommunicationUserIdentifier
pour réémettre un jeton en transmettant ’identité existante :
# The existingIdentity value represents the Communication Services identity that's stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])
Révoquer des jetons d’accès
Vous devrez peut-être révoquer explicitement un jeton d’accès. Par exemple, lorsque les utilisateurs de l’application modifient le mot de passe qu’ils utilisent pour s’authentifier auprès de votre service. La méthode revoke_tokens
invalide tous les jetons d’accès actifs qui ont été émis pour l’identité.
client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])
Supprimer une identité
Lorsque vous supprimez une identité, vous révoquez tous les jetons d’accès actifs et vous empêchez les nouvelles émissions de jetons d’accès pour l’identité. Cela supprime également tout contenu persistant associé à l’identité.
client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])
Exécuter le code
À partir d’une invite de console, accédez au répertoire contenant le fichier issue-access-tokens.py
, puis exécutez la commande python
suivante pour exécuter l’application.
python ./issue-access-tokens.py
La sortie générée décrit chaque action terminée :
Azure Communication Services - Access Tokens Quickstart
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52
Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.9028648+00:00:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Kit de développement Java (JDK), version 8 ou ultérieure
- Apache Maven.
- Une ressource Communication Services active et la chaîne de connexion. Créez une ressource Communication Services.
Code final
Recherchez le code finalisé sur GitHub.
Configurer votre environnement
Créer une application Java
Dans un terminal ou une fenêtre d’invite de commandes, accédez au répertoire dans lequel vous souhaitez créer votre application Java. Exécutez le code ci-dessous pour générer le projet Java à partir du modèle maven-archetype-quickstart :
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Notez que la tâche generate
crée un répertoire portant le même nom que artifactId
. Sous ce répertoire, le répertoire src/main/java
contient le code source du projet, le répertoire src/test/java
contient la source de test et le fichier pom.xml
est le modèle objet du projet (POM). Ce fichier est utilisé pour les paramètres de configuration du projet.
Installer les packages Azure Communication Services
Ouvrez le fichier pom.xml
dans votre éditeur de texte. Ajoutez l’élément dépendance suivant au groupe de dépendances :
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-identity</artifactId>
<version>[1.4.0,)</version>
</dependency>
Ce code indique à Maven d’installer le Kit de développement logiciel (SDK) de l'identité Communication Services, que vous devrez utiliser ultérieurement.
Configurer le framework d’application
Dans le répertoire du projet, procédez comme suit :
- Accédez au répertoire
/src/main/java/com/communication/quickstart
. - Ouvrez le fichier
App.java
dans votre éditeur. - Remplacez l’instruction
System.out.println("Hello world!");
. - Ajouter des directives
import
.
Utilisez le code suivant pour commencer :
package com.communication.quickstart;
import com.azure.communication.common.*;
import com.azure.communication.identity.*;
import com.azure.communication.identity.models.*;
import com.azure.core.credential.*;
import java.io.IOException;
import java.time.*;
import java.util.*;
public class App
{
public static void main( String[] args ) throws IOException
{
System.out.println("Azure Communication Services - Access Tokens Quickstart");
// Quickstart code goes here
}
}
Authentifier le client
Instanciez un CommunicationIdentityClient
avec la clé d’accès et le point de terminaison de votre ressource. Pour plus d’informations, consultez Créer et gérer des ressources Communication Services > Stocker votre chaîne de connexion.
Vous pouvez aussi initialiser le client avec n’importe quel client HTTP personnalisé qui implémente l’interface com.azure.core.http.HttpClient
.
Dans le fichier App.java
, ajoutez le code suivant à la méthode main
:
// You can find your endpoint and access key from your resource in the Azure portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
String accessKey = "SECRET";
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.endpoint(endpoint)
.credential(new AzureKeyCredential(accessKey))
.buildClient();
Vous pouvez également fournir la chaîne de connexion entière à l’aide de la méthode connectionString()
au lieu de fournir le point de terminaison et la clé d’accès.
// You can find your connection string from your Communication Services resource in the Azure portal
String connectionString = "<connection_string>";
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.connectionString(connectionString)
.buildClient();
Si vous avez déjà configuré une application Microsoft Entra, vous pouvez vous authentifier à l’aide de Microsoft Entra ID.
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
Créer une identité
Pour créer des jetons d’accès, vous avez besoin d’une identité. Azure Communication Services gère un répertoire LID (Lightweight Identity Directory) à cet effet. Utilisez la méthode createUser
pour créer une entrée, avec une valeur Id
unique, dans le répertoire.
CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());
L’identité créée sera demandée ultérieurement pour émettre des jetons d’accès. Stockez l’identité reçue avec un mappage aux utilisateurs de votre application (par exemple, en la stockant dans la base de données de votre serveur d’applications).
Émettre un jeton d’accès
Avec la méthode getToken
, émettez un jeton d’accès pour votre identité Communication Services. Le paramètre scopes
définit un ensemble d’autorisations et de rôles de jeton d’accès. Pour plus d’informations, consultez la liste des actions prises en charge dans le modèle d’identité.
Dans le code suivant, utilisez la variable utilisateur que vous avez créée à l’étape précédente pour obtenir un jeton.
// Issue an access token with a validity of 24 hours and the "voip" scope for a user identity
List<CommunicationTokenScope> scopes = new ArrayList<>(Arrays.asList(CommunicationTokenScope.VOIP));
AccessToken accessToken = communicationIdentityClient.getToken(user, scopes);
OffsetDateTime expiresAt = accessToken.getExpiresAt();
String token = accessToken.getToken();
System.out.println("\nIssued an access token with 'voip' scope that expires at: " + expiresAt + ": " + token);
Les jetons d’accès sont des informations d’identification à durée de vie courte, qui doivent être réémises. Ne pas le faire peut entraîner une interruption de l’expérience utilisateur de votre application. La propriété expiresAt
indique la durée de vie du jeton d’accès.
Définir une heure d’expiration de jeton personnalisé
L’heure d’expiration du jeton par défaut est de 24 heures, mais vous pouvez la configurer en fournissant une valeur comprise entre une heure et 24 heures au paramètre facultatif tokenExpiresIn
. Lors de la demande d’un nouveau jeton, spécifiez la durée normale attendue d’une session de communication pour l’heure d’expiration du jeton.
// Issue an access token with a validity of an hour and the "voip" scope for a user identity
List<CommunicationTokenScope> scopes = new ArrayList<>(Arrays.asList(CommunicationTokenScope.VOIP));
Duration tokenExpiresIn = Duration.ofHours(1);
AccessToken accessToken = communicationIdentityClient.getToken(user, scopes, tokenExpiresIn);
Créer une identité et émettre un jeton en une requête
Vous pouvez également utiliser la méthode « createUserAndToken » pour créer une entrée dans le répertoire avec un Id
unique et émettre un jeton d’accès en même temps.
//Create an identity and issue token with a validity of 24 hours in one call
List<CommunicationTokenScope> scopes = Arrays.asList(CommunicationTokenScope.CHAT);
CommunicationUserIdentifierAndToken result = communicationIdentityClient.createUserAndToken(scopes);
CommunicationUserIdentifier user = result.getUser();
System.out.println("\nCreated a user identity with ID: " + user.getId());
AccessToken accessToken = result.getUserToken();
OffsetDateTime expiresAt = accessToken.getExpiresAt();
String token = accessToken.getToken();
System.out.println("\nIssued an access token with 'chat' scope that expires at: " + expiresAt + ": " + token);
Actualiser un jeton d’accès
Pour actualiser un jeton d’accès, utilisez l’objet CommunicationUserIdentifier
permettant de l’émettre à nouveau :
// existingIdentity represents the Communication Services identity that's stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);
Révoquer un jeton d’accès
Vous devrez peut-être révoquer explicitement un jeton d’accès. Par exemple, vous pouvez le faire lorsque les utilisateurs de l’application modifient le mot de passe qu’ils utilisent pour s’authentifier auprès de votre service. La méthode revokeTokens
invalide tous les jetons d’accès actifs pour un utilisateur particulier. Dans le code suivant, vous pouvez utiliser l’utilisateur créé précédemment.
communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());
Supprimer une identité
Lorsque vous supprimez une identité, vous révoquez tous les jetons d’accès actifs et vous empêchez les nouvelles émissions de jetons d’accès pour l’identité. Cela supprime également tout contenu persistant associé à l’identité.
communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());
Exécuter le code
Accédez au répertoire contenant le fichier
pom.xml
.Compilez le projet à l’aide de la commande
mvn
suivante :mvn compile
générez le package :
mvn package
Exécutez la commande
mvn
suivante pour exécuter l’application :mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
La sortie décrit chaque action terminée :
Azure Communication Services - Access Tokens Quickstart
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Issued an access token with 'voip' scope that expires at 2022-10-11T07:34:29.902864800Z:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Created an identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-1ce9-31b4-54b7-a43a0d006a52
Issued an access token with 'chat' scope that expires at 2022-10-11T07:34:29.902864800Z:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMF8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJzY3AiOjE3OTIsImNzaSI6IjE2NjUzODcyNjkiLCJleHAiOjE2NjUzOTA4NjksImFjc1Njb3BlIjoidm9pcCIsInJlc291cmNlSWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY1Mzg3MjY5fQ.kTXpQQtY7w6O82kByljZXrKtBvNNOleDE5m06LapzLeoWfRZCCpJQcDzBoLRA146mOhNzLZ0b5WMNTa5tD-0hWCiicDwgKLMASEGY9g0EvNQOidPff47g2hh6yqi9PKiDPp-t5siBMYqA6Nh6CQ-Oeh-35vcRW09VfcqFN38IgSSzJ7QkqBiY_QtfXz-iaj81Td0287KO4U1y2LJIGiyJLWC567F7A_p1sl6NmPKUmvmwM47tyCcQ1r_lfkRdeyDmcrGgY6yyI3XJZQbpxyt2DZqOTSVPB4PuRl7iyXxvppEa4Uo_y_BdMOOWFe6YTRB5O5lhI8m7Tf0LifisxX2sw
Successfully revoked all access tokens for identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Deleted the identity with ID: 8:acs:4ccc92c8-9815-4422-bddc-ceea181dc774_00000006-19e0-2727-80f5-8b3a0d003502
Prérequis
Créer les jetons d’accès
Dans le portail Azure, accédez au panneau Identités et jetons d’accès utilisateur de votre ressource Communication Services.
Choisissez l’étendue des jetons d’accès. Vous pouvez ne choisir aucun service ou en choisir un ou plusieurs.
Sélectionnez Générer.
Le système génère une identité et le jeton d’accès utilisateur correspondant.
Copiez ces chaînes et utilisez-les dans les exemples d’applications et d’autres scénarios de test.
Prérequis
Compte Azure avec un abonnement actif. Créez gratuitement un compte Azure.
Une ressource Azure Communication Services active. Créez une ressource Communication Services.
Ressource Azure Logic Apps active (application logique). Créez un flux de travail d’application logique Consommation avec le déclencheur que vous souhaitez utiliser. Comme le connecteur Azure Communication Services Identity ne fournit actuellement que des actions, votre application logique nécessite au minimum un déclencheur.
Créer un utilisateur
Ajoutez une nouvelle étape dans votre flux de travail à l’aide du connecteur Azure Communication Services Identity. Effectuez ces étapes dans Power Automate avec votre flux Power Automate ouvert en mode modifier.
Ouvrez le concepteur. Dans l’étape à laquelle vous souhaitez ajouter la nouvelle action, sélectionnez Nouvelle étape. Vous pouvez également ajouter la nouvelle action entre les étapes en plaçant le pointeur sur la flèche entre ces étapes, en sélectionnant le signe plus (+), puis en sélectionnant Ajouter une action.
Dans la zone de recherche Choisir une opération, entrez Communication Services Identity. Dans la liste des actions, sélectionnez Créer un utilisateur.
Fournissez la chaîne de connexion. Vous pouvez le trouver dans le portail Microsoft Azure, dans votre ressource Azure Communication Service. Sélectionnez l’option Clés dans le menu du volet gauche pour afficher la chaîne de connexion.
Fournissez un nom de connexion.
Cliquez sur Créer
Cette action génère un ID d’utilisateur, qui est une identité d’utilisateur Communication Services. En outre, si vous cliquez sur Afficher les options avancées et sélectionnez Étendue du jeton, l’action génère également un jeton d’accès et son heure d’expiration avec l’étendue spécifiée.
Émettre un jeton d’accès utilisateur
Une fois que vous avez une identité Communication Services, vous pouvez émettre un jeton d’accès. Suivez les étapes ci-dessous :
Ajoutez une nouvelle action et entrez Identité Communication Services dans la zone de recherche. Dans la liste des actions, sélectionnez Émettre un jeton d’accès utilisateur.
Vous pouvez maintenant utiliser l’identifiant utilisateur généré lors de l’étape Créer un utilisateur.
Spécifiez l’étendue du jeton : VoIP ou conversation. Apprenez-en davantage sur les jetons et l’authentification.
Le système génère un jeton d’accès et son heure d’expiration avec l’étendue spécifiée.
Révoquer des jetons d’accès utilisateur
Une fois que vous disposez d’une identité Communication Services, vous pouvez utiliser l’action Émettre un jeton d’accès utilisateur pour révoquer un jeton d’accès. Effectuez les étapes suivantes :
Ajoutez une nouvelle action et entrez Identité Communication Services dans la zone de recherche. Dans la liste des actions, sélectionnez Révoquer les jetons d’accès utilisateur.
Spécifiez l’identifiant utilisateur.
Le système révoque tous les jetons d’accès utilisateur pour l’utilisateur spécifié. Il n’existe aucune sortie pour cette action.
Suppression d’un utilisateur
Une fois que vous disposez d’une identité Communication Services, vous pouvez utiliser l’action Émettre un jeton d’accès utilisateur pour supprimer un jeton d’accès. Suivez les étapes ci-dessous :
Ajoutez une nouvelle action et entrez Identité Communication Services dans la zone de recherche. Dans la liste des actions, sélectionnez Supprimer un utilisateur.
Spécifiez l’identifiant utilisateur.
Le système supprime l’utilisateur et révoque tous les jetons d’accès utilisateur pour l’utilisateur spécifié. Il n’existe aucune sortie pour cette action.
Tester votre application logique
Pour démarrer manuellement votre workflow, sélectionnez Exécuter dans la barre d’outils du concepteur. Le workflow crée un utilisateur, émet un jeton d’accès pour cet utilisateur, puis supprime le jeton et l’utilisateur.
Pour plus d’informations, consultez Exécuter votre workflow. Vous pouvez vérifier les sorties de ces actions une fois que le flux de travail s’exécute correctement.
Utilisation de l’identité pour le monitoring et les métriques
L’identifiant utilisateur agit comme une clé primaire pour les journaux et les métriques collectés via Azure Monitor. Pour afficher tous les appels d’un utilisateur, par exemple, vous pouvez configurer votre authentification de manière à mapper une identité Azure Communication Services spécifique (ou plusieurs identités) à un seul utilisateur.
Pour plus d’informations, consultez l’article suivant :
Nettoyer les ressources
Pour nettoyer et supprimer un abonnement Communication Services, supprimez la ressource ou le groupe de ressources. La suppression d’un groupe de ressources efface également les autres ressources qui y sont associées. Pour plus d’informations, consultez Créer et gérer des ressources Communication Services > Nettoyer les ressources.
Pour nettoyer votre workflow d’application logique et les ressources associées, consultez Créer un exemple de workflow d’application logique Consommation à l’aide du portail Azure > Nettoyer les ressources.
Étapes suivantes
Cet article explique comment créer et supprimer un utilisateur. Il décrit également comment émettre un jeton d’accès pour un utilisateur et supprimer un jeton d’accès utilisateur à l’aide du connecteur Azure Communication Services Identity. Pour plus d’informations, consultez Connecteur Azure Communication Services Identity.
Pour en savoir plus sur la façon dont d’autres connecteurs utilisent les jetons, apprenez à envoyer un message de conversation à partir de Power Automate à l’aide d’Azure Communication Services.
Pour en savoir plus sur l’envoi d’un e-mail à l’aide du connecteur Azure Communication Services Email, consultez Envoyer un e-mail dans Power Automate avec Azure Communication Services.