Guida introduttiva: Creare e gestire i token di accesso
I token di accesso consentono agli SDK di Servizi di comunicazione di Azure di eseguire l'autenticazione direttamente in Servizi di comunicazione di Azure come identità specifica. È necessario creare token di accesso se si vuole che gli utenti partecipino a una chiamata o a un thread di chat all'interno dell'applicazione.
In questa guida introduttiva si apprenderà come usare gli SDK Servizi di comunicazione di Azure per creare identità e gestire i token di accesso. Per i casi d'uso di produzione, è consigliabile generare token di accesso in un servizio lato server.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
- Installare l'interfaccia della riga di comando di Azure.
Configurazione
Aggiungere l'estensione
Aggiungere l'estensione Servizi di comunicazione di Azure per l'interfaccia della riga di comando di Azure usando il az extension
comando .
az extension add --name communication
Accedere all'interfaccia della riga di comando di Azure
Sarà necessario accedere all'interfaccia della riga di comando di Azure. È possibile accedere eseguendo il az login
comando dal terminale e specificando le credenziali.
(Facoltativo) Usare le operazioni di identità dell'interfaccia della riga di comando di Azure senza passare un stringa di connessione
È possibile configurare la AZURE_COMMUNICATION_CONNECTION_STRING
variabile di ambiente per usare le operazioni di identità dell'interfaccia della riga di comando di Azure senza dover usare --connection_string
per passare il stringa di connessione. Per configurare una variabile di ambiente, aprire una finestra della console e selezionare il sistema operativo dalle schede seguenti. Sostituire <yourConnectionString>
con la stringa di connessione effettiva.
Aprire una finestra della console e immettere il comando seguente:
setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"
Dopo l'aggiunta della variabile di ambiente potrebbe essere necessario riavviare eventuali programmi in esecuzione che necessitano di leggere la variabile di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Archiviare il token di accesso in una variabile di ambiente
Per configurare una variabile di ambiente, aprire una finestra della console e selezionare il sistema operativo dalle schede seguenti. Sostituire <yourAccessToken>
con il token di accesso effettivo.
Aprire una finestra della console e immettere il comando seguente:
setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"
Dopo l'aggiunta della variabile di ambiente potrebbe essere necessario riavviare eventuali programmi in esecuzione che necessitano di leggere la variabile di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Operazioni
Creare un'identità
Per creare token di accesso, è necessaria un'identità. Servizi di comunicazione di Azure gestisce una directory di identità leggera a questo scopo. Usare il user create
comando per creare una nuova voce nella directory con un oggetto univoco Id
. L'identità è necessaria in un secondo momento per l'emissione di token di accesso.
az communication identity user create --connection-string "<yourConnectionString>"
- Sostituire
<yourConnectionString>
con il stringa di connessione.
Creare un'identità ed emettere un token di accesso nella stessa richiesta
Eseguire il comando seguente per creare un'identità di Servizi di comunicazione e rilasciare contemporaneamente un token di accesso. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate in Autenticarsi per Servizi di comunicazione di Azure.
az communication identity token issue --scope chat --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione.
Rilasciare il token di accesso
Eseguire il comando seguente per rilasciare un token di accesso per l'identità di Servizi di comunicazione. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate in Autenticarsi per Servizi di comunicazione di Azure.
az communication identity token issue --scope chat --user "<userId>" --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione. - Sostituire
<userId>
con userId.
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La proprietà della risposta expires_on
indica la durata del token di accesso.
Rilasciare un token di accesso con più ambiti
Eseguire il comando seguente per rilasciare un token di accesso con più ambiti per l'identità di Servizi di comunicazione. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate nel modello di identità.
az communication identity token issue --scope chat voip --user "<userId>" --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione. - Sostituire
<userId>
con userId.
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La proprietà della risposta expires_on
indica la durata del token di accesso.
Exchange a Microsoft Entra access token of the Teams User for a Communication Identity access token (Exchange a Microsoft Entra access token of the Teams User for a Communication Identity access token)
Usare il token get-for-teams-user
comando per rilasciare un token di accesso per l'utente di Teams che può essere usato con gli SDK Servizi di comunicazione di Azure.
az communication identity token get-for-teams-user --aad-token "<yourAadToken>" --client "<yourAadApplication>" --aad-user "<yourAadUser>" --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione. - Sostituire
<yourAadUser>
con microsoft Entra userId. - Sostituire
<yourAadApplication>
con l'ID applicazione Microsoft Entra. - Sostituire
<yourAadToken>
con il token di accesso Microsoft Entra.
Revocare i token di accesso
In alcuni casi potrebbe essere necessario revocare in modo esplicito un token di accesso. Ad esempio, quando gli utenti dell'applicazione modificano la password usata per eseguire l'autenticazione al servizio. Il token revoke
comando invalida tutti i token di accesso attivi rilasciati all'identità.
az communication identity token revoke --user "<userId>" --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione. - Sostituire
<userId>
con userId.
Eliminare un'identità
Quando si elimina un'identità, si revocano tutti i token di accesso attivi e si impedisce l'ulteriore rilascio di token di accesso per l'identità. In questo modo vengono rimossi anche tutti i contenuti persistenti associati all'identità.
az communication identity user delete --user "<userId>" --connection-string "<yourConnectionString>"
Sostituire questa sostituzione nel codice:
- Sostituire
<yourConnectionString>
con il stringa di connessione. - Sostituire
<userId>
con userId.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- La versione più recente di .NET Core SDK per il sistema operativo.
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Configurazione dell'ambiente
Creare una nuova applicazione C#
In una finestra del prompt dei comandi, ad esempio cmd, PowerShell o Bash, eseguire il dotnet new
comando per creare una nuova app console con il nome AccessTokensQuickstart
. Questo comando crea un semplice progetto C# "Hello World" con un singolo file di origine, Program.cs.
dotnet new console -o AccessTokensQuickstart
Passare alla cartella dell'app appena creata e usare il comando per compilare l'applicazione dotnet build
.
cd AccessTokensQuickstart
dotnet build
Verrà visualizzato un semplice output "Hello World". In caso affermativo, la configurazione funziona correttamente ed è possibile iniziare a scrivere il codice specifico del Servizi di comunicazione di Azure.
Installare il pacchetto
Mentre si è ancora nella directory dell'applicazione, installare la libreria di identità Servizi di comunicazione di Azure per il pacchetto .NET usando il dotnet add package
comando .
dotnet add package Azure.Communication.Identity
Configurare il framework dell'app
Nella directory del progetto eseguire le operazioni seguenti:
- Aprire il file Program.cs in un editor di testo.
- Aggiungere una
using
direttiva per includere loAzure.Communication.Identity
spazio dei nomi. - Aggiornare la dichiarazione del
Main
metodo per supportare il codice asincrono.
Per iniziare, eseguire il codice seguente:
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
}
}
}
Autenticare il client
Inizializzare CommunicationIdentityClient
con il stringa di connessione. Il codice seguente, aggiunto al Main
metodo , recupera il stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
.
Per altre informazioni, vedere la sezione "Archiviare il stringa di connessione" di Creare e gestire le risorse di Servizi di comunicazione.
// 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);
In alternativa, è possibile separare l'endpoint e la chiave di accesso eseguendo il codice seguente:
// 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));
Se è già stata configurata un'applicazione Microsoft Entra, è possibile eseguire l'autenticazione usando Microsoft Entra ID.
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);
Creare un'identità
Per creare token di accesso, è necessaria un'identità. Servizi di comunicazione di Azure gestisce una directory di identità leggera a questo scopo. Usare il metodo createUser
per creare una nuova voce nella directory con Id
univoco. L'identità è necessaria in un secondo momento per l'emissione di token di accesso.
var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Archiviare l'identità ricevuta con mapping agli utenti dell'applicazione, ad esempio archiviandola nel database del server applicazioni.
Rilasciare un token di accesso
Dopo aver ottenuto un'identità di Servizi di comunicazione, usare il GetToken
metodo per rilasciare un token di accesso. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate nel modello di identità. È anche possibile costruire una nuova istanza di communicationUser
in base a una rappresentazione di stringa di un'identità del servizio di comunicazione di Azure.
// 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);
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La expiresOn
proprietà indica la durata del token di accesso.
Impostare un'ora di scadenza del token personalizzata
L'ora di scadenza del token predefinita è di 24 ore, ma è possibile configurarla specificando un valore compreso tra un'ora e 24 ore al parametro tokenExpiresIn
facoltativo . Quando si richiede un nuovo token, è consigliabile specificare la lunghezza tipica prevista di una sessione di comunicazione per l'ora di scadenza del token.
// 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);
Creare un'identità ed emettere un token nella stessa richiesta
È possibile usare il CreateUserAndTokenAsync
metodo per creare un'identità di Servizi di comunicazione e rilasciare contemporaneamente un token di accesso. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate in Autenticarsi per Servizi di comunicazione di Azure.
// 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);
Aggiornare un token di accesso
Per aggiornare un token di accesso, passare un'istanza dell'oggetto CommunicationUserIdentifier
in GetTokenAsync
. Se questo oggetto Id
è stato archiviato ed è necessario creare un nuovo CommunicationUserIdentifier
, è possibile farlo passando l'oggetto Id
archiviato nel costruttore CommunicationUserIdentifier
, come segue:
var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });
Revocare i token di accesso
In alcuni casi potrebbe essere necessario revocare in modo esplicito un token di accesso. Ad esempio, quando gli utenti dell'applicazione modificano la password usata per eseguire l'autenticazione al servizio. Il RevokeTokensAsync
metodo invalida tutti i token di accesso attivi rilasciati all'identità.
await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");
Eliminare un'identità
Quando si elimina un'identità, si revocano tutti i token di accesso attivi e si impedisce l'ulteriore rilascio di token di accesso per l'identità. In questo modo vengono rimossi anche tutti i contenuti persistenti associati all'identità.
await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");
Eseguire il codice
Al termine della creazione del token di accesso, è possibile eseguire l'applicazione dalla directory dell'applicazione usando il dotnet run
comando .
dotnet run
L'output dell'app descrive ogni azione completata:
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
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Versioni di Active LTS e Maintenance LTS Node.js(versioni consigliate 8.11.1 e 10.14.1).
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Configurazione dell'ambiente
Creare una nuova applicazione Node.js
In una finestra del terminale o del prompt dei comandi creare una nuova directory per l'app e quindi aprirla.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Eseguire npm init -y
per creare un file package.json con le impostazioni predefinite.
npm init -y
Installare il pacchetto
Usare il npm install
comando per installare Servizi di comunicazione di Azure Identity SDK per JavaScript.
npm install @azure/communication-identity@latest --save
L'opzione --save
elenca la libreria come dipendenza nel file package.json.
Configurare il framework dell'app
Creare un file denominato
issue-access-token.js
nella directory del progetto e aggiungere il codice seguente: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); })
Autenticare il client
CommunicationIdentityClient
Creare un'istanza con il stringa di connessione. Il codice seguente, aggiunto al Main
metodo , recupera il stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
.
Per altre informazioni, vedere la sezione "Archiviare il stringa di connessione" di Creare e gestire le risorse di Servizi di comunicazione.
// 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);
In alternativa, è possibile separare l'endpoint e la chiave di accesso eseguendo il codice seguente:
// 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)
Se è già stata configurata un'applicazione Microsoft Entra, è possibile eseguire l'autenticazione usando Microsoft Entra ID.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);
Creare un'identità
Per creare token di accesso, è necessaria un'identità. Servizi di comunicazione di Azure gestisce una directory di identità leggera a questo scopo. Usare il metodo createUser
per creare una nuova voce nella directory con Id
univoco. L'identità è necessaria in un secondo momento per l'emissione di token di accesso.
let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);
Archiviare l'identità ricevuta con mapping agli utenti dell'applicazione, ad esempio archiviandola nel database del server applicazioni.
Rilasciare un token di accesso
Usare il getToken
metodo per rilasciare un token di accesso per l'identità di Servizi di comunicazione. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate nel modello di identità. È anche possibile costruire una nuova istanza di in communicationUser
base a una rappresentazione di stringa dell'identità del servizio di comunicazione di Azure.
// 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);
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La expiresOn
proprietà indica la durata del token di accesso.
Impostare un'ora di scadenza del token personalizzata
L'ora di scadenza del token predefinita è di 24 ore (1440 minuti), ma è possibile configurarla specificando un valore compreso tra 60 minuti e 1440 minuti per il parametro tokenExpiresInMinutes
facoltativo . Quando si richiede un nuovo token, è consigliabile specificare la lunghezza tipica prevista di una sessione di comunicazione per l'ora di scadenza del token.
// 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);
Creare un'identità ed emettere un token in una chiamata al metodo
È possibile usare il createUserAndToken
metodo per creare un'identità di Servizi di comunicazione e rilasciare contemporaneamente un token di accesso. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Anche in questo caso, viene creato con l'ambito 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);
Aggiornare un token di accesso
Alla scadenza dei token, sarà necessario aggiornarli periodicamente. L'aggiornamento è facile solo chiamare getToken
di nuovo con la stessa identità usata per rilasciare i token. Sarà anche necessario specificare i scopes
token aggiornati.
// 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"]);
Revocare i token di accesso
In alcuni casi potrebbe essere necessario revocare un token di accesso. Ad esempio, quando gli utenti dell'applicazione modificano la password usata per eseguire l'autenticazione al servizio. Il revokeTokens
metodo invalida tutti i token di accesso attivi rilasciati all'identità.
await identityClient.revokeTokens(identityResponse);
console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);
Eliminare un'identità
Quando si elimina un'identità, si revocano tutti i token di accesso attivi e si impedisce l'ulteriore rilascio di token di accesso per l'identità. In questo modo vengono rimossi anche tutti i contenuti persistenti associati all'identità.
await identityClient.deleteUser(identityResponse);
console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);
Eseguire il codice
Da un prompt della console passare alla directory che contiene il file issue-access-token.js e quindi eseguire il comando seguente node
per eseguire l'app:
node ./issue-access-token.js
L'output dell'app descrive ogni azione completata:
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
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Python 3.8+.
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Configurazione dell'ambiente
Creare una nuova applicazione Python
In una finestra del terminale o del prompt dei comandi creare una nuova directory per l'app e quindi aprirla.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Usare un editor di testo per creare un file denominato issue-access-tokens.py nella directory radice del progetto e aggiungere la struttura per il programma, inclusa la gestione delle eccezioni di base. Si aggiungerà tutto il codice sorgente per questa guida introduttiva a questo file nelle sezioni seguenti.
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)
Installare il pacchetto
Mentre si è ancora nella directory dell'applicazione, installare il pacchetto Servizi di comunicazione di Azure Identity SDK per Python usando il pip install
comando .
pip install azure-communication-identity
Autenticare il client
Creare un'istanza di CommunicationIdentityClient
con la stringa di connessione. Il codice seguente, aggiunto al try
blocco , recupera il stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
.
Per altre informazioni, vedere la sezione "Archiviare il stringa di connessione" di Creare e gestire le risorse di Servizi di comunicazione.
# 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)
In alternativa, se è già stata configurata un'applicazione Microsoft Entra, è possibile eseguire l'autenticazione usando Microsoft Entra ID.
endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())
Creare un'identità
Per creare token di accesso, è necessaria un'identità. Servizi di comunicazione di Azure gestisce una directory di identità leggera a questo scopo. Usare il metodo create_user
per creare una nuova voce nella directory con Id
univoco. L'identità è necessaria in un secondo momento per l'emissione di token di accesso.
identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])
Archiviare l'identità ricevuta con mapping agli utenti dell'applicazione, ad esempio archiviandola nel database del server applicazioni.
Rilasciare un token di accesso
Usare il get_token
metodo per rilasciare un token di accesso per l'identità di Servizi di comunicazione. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate nel modello di identità. È anche possibile costruire una nuova istanza di parametro CommunicationUserIdentifier
in base a una rappresentazione di stringa dell'identità del servizio di comunicazione di Azure.
# 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)
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La proprietà della risposta expires_on
indica la durata del token di accesso.
Impostare un'ora di scadenza del token personalizzata
L'ora di scadenza del token predefinita è di 24 ore, ma è possibile configurarla specificando un valore compreso tra un'ora e 24 ore al parametro token_expires_in
facoltativo . Quando si richiede un nuovo token, è consigliabile specificare la lunghezza tipica prevista di una sessione di comunicazione per l'ora di scadenza del token.
# 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)
Creare un'identità ed emettere un token di accesso nella stessa richiesta
È possibile usare il create_user_and_token
metodo per creare un'identità di Servizi di comunicazione e rilasciare contemporaneamente un token di accesso. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate in Autenticarsi per Servizi di comunicazione di Azure.
# 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)
Aggiornare un token di accesso
Per aggiornare un token di accesso, usare l'oggetto CommunicationUserIdentifier
per eseguire nuovamente un token passando l'identità esistente:
# The existingIdentity value represents the Communication Services identity that's stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])
Revocare i token di accesso
In alcuni casi potrebbe essere necessario revocare in modo esplicito un token di accesso. Ad esempio, quando gli utenti dell'applicazione modificano la password usata per eseguire l'autenticazione al servizio. Il revoke_tokens
metodo invalida tutti i token di accesso attivi rilasciati all'identità.
client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])
Eliminare un'identità
Quando si elimina un'identità, si revocano tutti i token di accesso attivi e si impedisce l'ulteriore rilascio di token di accesso per l'identità. In questo modo vengono rimossi anche tutti i contenuti persistenti associati all'identità.
client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])
Eseguire il codice
Da un prompt della console passare alla directory che contiene il file issue-access-tokens.py e quindi eseguire il comando seguente python
per eseguire l'app.
python ./issue-access-tokens.py
L'output dell'app descrive ogni azione completata:
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
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Java Development Kit (JDK) versione 8 o successiva.
- Apache Maven.
- Una stringa di connessione e una risorsa attiva di Servizi di comunicazione. Creare una risorsa di Servizi di comunicazione.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Configurazione dell'ambiente
Creare una nuova applicazione Java
In una finestra del terminale o del prompt dei comandi passare alla directory in cui si vuole creare l'applicazione Java. Per generare un progetto Java dal modello maven-archetype-quickstart, eseguire il codice seguente:
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Si noterà che l'attività generate
crea una directory con lo stesso nome di artifactId
. In questa directory la directory src/main/java contiene il codice sorgente del progetto, la directory src/test/java contiene l'origine di test e il file pom.xml è il modello a oggetti del progetto (POM). Questo file viene usato per i parametri di configurazione del progetto.
Installare i pacchetti di Servizi di comunicazione
Aprire il file pom.xml nell'editor di testo. Aggiungere l'elemento di dipendenza seguente al gruppo di dipendenze:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-identity</artifactId>
<version>[1.4.0,)</version>
</dependency>
Questo codice indica a Maven di installare Communication Services Identity SDK, che verrà usato in un secondo momento.
Configurare il framework dell'app
Nella directory del progetto eseguire le operazioni seguenti:
- Passare alla directory /src/main/java/com/communication/quickstart .
- Aprire il file App.java nell'editor.
- Sostituire l'istruzione
System.out.println("Hello world!");
. - Aggiungere
import
direttive.
Per iniziare, usare il codice seguente:
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
}
}
Autenticare il client
Creare un'istanza di CommunicationIdentityClient
con l'endpoint e la chiave di accesso della risorsa. Per altre informazioni, vedere la sezione "Archiviare il stringa di connessione" di Creare e gestire le risorse di Servizi di comunicazione.
Inoltre, è possibile inizializzare il client con qualsiasi client HTTP personalizzato che implementa l'interfaccia com.azure.core.http.HttpClient
.
Nel file App.java aggiungere il codice seguente al main
metodo :
// 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();
Anziché fornire l'endpoint e la chiave di accesso, è possibile fornire l'intero stringa di connessione usando il connectionString()
metodo .
// 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();
Se è già stata configurata un'applicazione Microsoft Entra, è possibile eseguire l'autenticazione usando 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();
Creare un'identità
Per creare token di accesso, è necessaria un'identità. Servizi di comunicazione di Azure gestisce una directory di identità leggera a questo scopo. Usare il metodo createUser
per creare una nuova voce nella directory con Id
univoco.
CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());
L'identità creata è necessaria in un secondo momento per l'emissione di token di accesso. Archiviare l'identità ricevuta con mapping agli utenti dell'applicazione, ad esempio archiviandola nel database del server applicazioni.
Rilasciare un token di accesso
Usare il getToken
metodo per rilasciare un token di accesso per l'identità di Servizi di comunicazione. Il scopes
parametro definisce un set di autorizzazioni e ruoli del token di accesso. Per altre informazioni, vedere l'elenco delle azioni supportate nel modello di identità.
Nel codice seguente usare la variabile utente creata nel passaggio precedente per ottenere un token.
// 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);
I token di accesso sono credenziali di breve durata che devono essere riemesse. In caso contrario, potrebbe verificarsi un'interruzione dell'esperienza degli utenti dell'applicazione. La expiresAt
proprietà indica la durata del token di accesso.
Impostare un'ora di scadenza del token personalizzata
L'ora di scadenza del token predefinita è di 24 ore, ma è possibile configurarla specificando un valore compreso tra un'ora e 24 ore al parametro tokenExpiresIn
facoltativo . Quando si richiede un nuovo token, è consigliabile specificare la lunghezza tipica prevista di una sessione di comunicazione per l'ora di scadenza del token.
// 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);
Creare un'identità ed emettere un token in una richiesta
In alternativa, è possibile usare il metodo 'createUserAndToken' per creare una nuova voce nella directory con un token di accesso univoco Id
e rilasciare contemporaneamente un token di accesso.
//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);
Aggiornare un token di accesso
Per aggiornare un token di accesso, usare l'oggetto CommunicationUserIdentifier
per riemetterlo di nuovo:
// existingIdentity represents the Communication Services identity that's stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);
Revocare un token di accesso
In alcuni casi potrebbe essere necessario revocare in modo esplicito un token di accesso. Ad esempio, quando gli utenti dell'applicazione modificano la password usata per eseguire l'autenticazione al servizio. Il revokeTokens
metodo invalida tutti i token di accesso attivi per un determinato utente. Nel codice seguente è possibile usare l'utente creato in precedenza.
communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());
Eliminare un'identità
Quando si elimina un'identità, si revocano tutti i token di accesso attivi e si impedisce l'ulteriore rilascio di token di accesso per l'identità. In questo modo vengono rimossi anche tutti i contenuti persistenti associati all'identità.
communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());
Eseguire il codice
Passare alla directory contenente il file pom.xml e quindi compilare il progetto usando il comando seguente mvn
:
mvn compile
Compilare quindi il pacchetto:
mvn package
Eseguire il comando seguente mvn
per eseguire l'app:
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
L'output dell'app descrive ogni azione completata:
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
Prerequisiti
Creare i token di accesso
Nella portale di Azure passare al pannello Identità e token di accesso utente all'interno della risorsa di Servizi di comunicazione.
Scegliere l'ambito dei token di accesso. È possibile selezionare nessuno, uno o più. Fare clic su Genera.
Verrà visualizzata un'identità e un token di accesso utente corrispondente generato. È possibile copiare queste stringhe e usarle nelle app di esempio e in altri scenari di test.
Prerequisiti
Un account Azure con una sottoscrizione attiva; in alternativa, creare un account gratuito.
Una risorsa attiva di Servizi di comunicazione di Azure; in alternativa, creare una risorsa di Servizi di comunicazione.
Una risorsa attiva App per la logica di Azure (app per la logica) o creare un flusso di lavoro dell'app per la logica a consumo con il trigger che si vuole usare. Attualmente, il connettore di identità Servizi di comunicazione di Azure fornisce solo azioni, quindi l'app per la logica richiede almeno un trigger.
Creare un utente
Aggiungere un nuovo passaggio nel flusso di lavoro usando il connettore di identità Servizi di comunicazione di Azure, seguire questa procedura in Power Automate con il flusso di Power Automate aperto in modalità di modifica.
Nella finestra di progettazione, nel passaggio in cui aggiungere la nuova azione, selezionare Nuovo passaggio. In alternativa, per aggiungere la nuova azione tra i passaggi, spostare il puntatore sulla freccia tra questi passaggi, selezionare il segno più (+) e selezionare Aggiungi un'azione.
Nella casella di ricerca Scegliere un'operazione immettere Identità servizi di comunicazione. Nell'elenco delle azioni selezionare Crea un utente.
Specificare la stringa di Connessione ion. Questa opzione è disponibile in Microsoft Azure, all'interno della risorsa del servizio di comunicazione di Azure, nell'opzione Chiavi del menu > a sinistra Connessione ion String
Specificare un nome di Connessione ion
Fare clic su Crea
Questa azione restituirà un ID utente, ovvero un'identità utente di Servizi di comunicazione. Inoltre, se si fa clic su "Mostra opzioni avanzate" e si seleziona l'ambito del token, l'azione restituirà anche un token di accesso e la relativa ora di scadenza con l'ambito specificato.
Rilasciare un token di accesso utente
Dopo aver ottenuto un'identità di Servizi di comunicazione, è possibile usare l'azione Rilascia un token di accesso utente per rilasciare un token di accesso. I passaggi seguenti illustrano come:
Aggiungere una nuova azione e immettere Identità servizi di comunicazione nella casella di ricerca. Nell'elenco delle azioni selezionare Rilascia un token di accesso utente.
È quindi possibile usare l'output dell'ID utente del passaggio precedente Creare un utente .
Specificare l'ambito del token: VoIP o chat. Altre informazioni sui token e l'autenticazione.
Verrà restituito un token di accesso e la relativa ora di scadenza con l'ambito specificato.
Revocare i token di accesso utente
Dopo aver ottenuto un'identità di Servizi di comunicazione, è possibile usare l'azione Rilascia un token di accesso utente per revocare un token di accesso. I passaggi seguenti illustrano come:
Aggiungere una nuova azione e immettere Identità servizi di comunicazione nella casella di ricerca. Nell'elenco delle azioni selezionare Revoca token di accesso utente.
Specificare l'ID utente
In questo modo verranno revocati tutti i token di accesso utente per l'utente specificato, non sono presenti output per questa azione.
Eliminare un utente
Dopo aver ottenuto un'identità di Servizi di comunicazione, è possibile usare l'azione Rilasciare un token di accesso utente per eliminare un token di accesso . I passaggi seguenti illustrano come:
Aggiungere una nuova azione e immettere Identità servizi di comunicazione nella casella di ricerca. Nell'elenco delle azioni selezionare Elimina un utente.
Specificare l'ID utente
In questo modo l'utente verrà rimosso e revocato tutti i token di accesso utente per l'utente specificato, non sono presenti output per questa azione.
Testare l'app per la logica
Per avviare manualmente il flusso di lavoro, sulla barra degli strumenti della finestra di progettazione selezionare Esegui. Il flusso di lavoro deve creare un utente, rilasciare un token di accesso per l'utente, quindi rimuoverlo ed eliminare l'utente. Per altre informazioni, vedere come eseguire il flusso di lavoro. È possibile controllare gli output di queste azioni dopo l'esecuzione del flusso di lavoro.
Usare l'identità per il monitoraggio e le metriche
L'ID utente deve fungere da chiave primaria per i log e le metriche raccolti tramite Monitoraggio di Azure. Per visualizzare tutte le chiamate di un utente, ad esempio, è possibile configurare l'autenticazione in modo da eseguire il mapping di un'identità di Servizi di comunicazione di Azure specifica (o identità) a un singolo utente.
Altre informazioni sui concetti di autenticazione, sulla diagnostica delle chiamate tramite Log Analytics e sulle metriche disponibili.
Pulire le risorse
Per pulire e rimuovere una sottoscrizione di Servizi di comunicazione, eliminare la risorsa o il gruppo di risorse. L'eliminazione di un gruppo di risorse elimina anche tutte le altre risorse associate. Per altre informazioni, vedere la sezione "Pulire le risorse" di Creare e gestire le risorse di Servizi di comunicazione.
Per pulire il flusso di lavoro dell'app per la logica e le risorse correlate, vedere come pulire App per la logica di Azure risorse.
Passaggi successivi
In questa guida introduttiva si è appreso come:
- Risolvere i problemi dei token di accesso
- Gestire le identità
È anche possibile:
Passaggi successivi
In questa guida introduttiva si è appreso come creare un utente, eliminare un utente, rilasciare un token di accesso utente e rimuovere il token di accesso utente usando il connettore di identità Servizi di comunicazione di Azure. Per altre informazioni, vedere la documentazione di Servizi di comunicazione di Azure Identity Connessione or.
Per informazioni sull'uso dei token da parte di altri connettori, vedere come inviare un messaggio di chat da Power Automate usando Servizi di comunicazione di Azure.
Per altre informazioni su come inviare un messaggio di posta elettronica usando il connettore di posta elettronica di Servizi di comunicazione di Azure, vedere Inviare un messaggio di posta elettronica in Power Automate con Servizi di comunicazione di Azure.