Condividi tramite


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

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

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:

  1. Aprire il file Program.cs in un editor di testo.
  2. Aggiungere una using direttiva per includere lo Azure.Communication.Identity spazio dei nomi.
  3. 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 tokenExpiresInfacoltativo . 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

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

  1. 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 tokenExpiresInMinutesfacoltativo . 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

Codice finale

Trovare il codice finalizzato per questa guida introduttiva in GitHub.

Configurazione dell'ambiente

Creare una nuova applicazione Python

  1. 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
    
  2. 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_infacoltativo . 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

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:

  1. Passare alla directory /src/main/java/com/communication/quickstart .
  2. Aprire il file App.java nell'editor.
  3. Sostituire l'istruzione System.out.println("Hello world!"); .
  4. 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 tokenExpiresInfacoltativo . 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.

Selezionare gli ambiti dei token di identità e di accesso.

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.

I token di identità e di accesso vengono generati e visualizzano la data di scadenza.

Prerequisiti

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.

  1. 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.

  2. Nella casella di ricerca Scegliere un'operazione immettere Identità servizi di comunicazione. Nell'elenco delle azioni selezionare Crea un utente.

    Screenshot che mostra l'azione Crea utente Servizi di comunicazione di Azure Connettore di identità.

  3. 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

    Screenshot che mostra la pagina Chiavi all'interno di una risorsa Servizi di comunicazione di Azure.

  4. Specificare un nome di Connessione ion

  5. 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.

    Screenshot che mostra l'azione Crea utente del connettore Servizi di comunicazione di Azure.

    Screenshot che mostra le opzioni avanzate Create user action del connettore Servizi di comunicazione di Azure.

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:

  1. 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.

    Screenshot che mostra l'azione Servizi di comunicazione di Azure Identity Connector Issue access token (Problema token di accesso).

  2. È quindi possibile usare l'output dell'ID utente del passaggio precedente Creare un utente .

  3. Specificare l'ambito del token: VoIP o chat. Altre informazioni sui token e l'autenticazione.

    Screenshot che mostra l'azione Servizi di comunicazione di Azure Identity Connector Issue access token (Problema token di accesso), specificando l'ambito del token.

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:

  1. Aggiungere una nuova azione e immettere Identità servizi di comunicazione nella casella di ricerca. Nell'elenco delle azioni selezionare Revoca token di accesso utente.

    Screenshot che mostra l'azione revoca token di accesso Servizi di comunicazione di Azure connettore di identità.

  2. Specificare l'ID utente

    Screenshot che mostra l'input dell'azione Revoca token di accesso Servizi di comunicazione di Azure Connettore di identità.

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:

  1. Aggiungere una nuova azione e immettere Identità servizi di comunicazione nella casella di ricerca. Nell'elenco delle azioni selezionare Elimina un utente.

    Screenshot che mostra l'azione Elimina utente Servizi di comunicazione di Azure Connettore di identità.

  2. Specificare l'ID utente

    Screenshot che mostra l'input dell'azione delete user di Servizi di comunicazione di Azure Identity Connector.

    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.