Creación y administración de tokens de acceso
Los tokens de acceso permiten que los SDK de Azure Communication Services se autentiquen directamente en Azure Communication Services como una identidad determinada. Debe crear tokens de acceso si desea que los usuarios se unan a una llamada o un subproceso de chat dentro de la aplicación.
En este inicio rápido, aprenderá a usar los SDK de Azure Communication Services para crear identidades y administrar los tokens de acceso. Para los casos de uso de producción, se recomienda generar tokens de acceso en un servicio del lado servidor, tal como se describe en diseño de arquitectura móvil.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
- Instale la CLI de Azure.
Configurar el entorno
Adición de la extensión
Agregue la extensión Azure Communication Services para la CLI de Azure mediante el comando az extension
.
az extension add --name communication
Inicio de sesión en la CLI de Azure
Deberá iniciar sesión en la CLI de Azure. Puede iniciar sesión mediante la ejecución del az login
comando desde el terminal y, a continuación, proporcionar sus credenciales.
(Opcional) Uso de operaciones de identidad de la CLI de Azure sin pasar una cadena de conexión
Puede configurar la variable de entorno AZURE_COMMUNICATION_CONNECTION_STRING
para usar operaciones de identidad de la CLI de Azure sin tener que usar --connection_string
para pasar la cadena de conexión. Para configurar una variable de entorno, abra una ventana de la consola y seleccione el sistema operativo en las pestañas siguientes. Reemplace <yourConnectionString>
por la cadena de conexión real.
Abra una ventana de consola y escriba el siguiente comando:
setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"
Después de agregar la variable de entorno, es posible que tenga que reiniciar los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Almacenamiento del token de acceso en una variable de entorno
Para configurar una variable de entorno, abra una ventana de consola y seleccione el sistema operativo en las pestañas siguientes. Reemplace <yourAccessToken>
con su token de acceso real.
Abra una ventana de consola y escriba el siguiente comando:
setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"
Después de agregar la variable de entorno, es posible que tenga que reiniciar los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Operaciones
Creación de una identidad
Para crear tokens de acceso, necesita una identidad. Azure Communication Services mantiene un directorio de identidad ligero para este propósito. Use el comando user create
para crear una nueva entrada en el directorio con un Id
único. La identidad es necesaria más adelante para emitir tokens de acceso.
az communication identity user create --connection-string "<yourConnectionString>"
- Reemplace
<yourConnectionString>
por la cadena de conexión.
Creación de una identidad y emisión de un token de acceso en la misma solicitud
Ejecute el siguiente comando para crear una identidad de Communication Services y, a la vez, emitir un token de acceso para ella. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, vea la lista de acciones admitidas en Autenticación para Azure Communication Services.
az communication identity token issue --scope chat --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión.
Emitir tokens de acceso
Ejecute el siguiente comando para emitir un token de acceso para la identidad de Communication Services. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, vea la lista de acciones admitidas en Autenticación para Azure Communication Services.
az communication identity token issue --scope chat --user "<userId>" --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión. - Reemplace
<userId>
por su userId.
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad de respuesta expires_on
indica la duración del token de acceso.
Emisión del token de acceso con varios ámbitos
Ejecute el siguiente comando para emitir un token de acceso con varios ámbitos para la identidad de Communication Services. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, consulte la lista de acciones admitidas en el modelo de identidad.
az communication identity token issue --scope chat voip --user "<userId>" --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión. - Reemplace
<userId>
por su userId.
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad de respuesta expires_on
indica la duración del token de acceso.
Intercambio de un token de acceso de Microsoft Entra del usuario de Teams por un token de acceso de identidad comunicación
Use el comando token get-for-teams-user
para emitir un token de acceso para el usuario de Teams que se puede usar con los SDK de Azure Communication Services.
az communication identity token get-for-teams-user --aad-token "<yourAadToken>" --client "<yourAadApplication>" --aad-user "<yourAadUser>" --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión. - Reemplace
<yourAadUser>
por su identificador de usuario de Microsoft Entra. - Reemplace
<yourAadApplication>
por el identificador de aplicación de Microsoft Entra. - Reemplace
<yourAadToken>
por su token de acceso de Microsoft Entra.
Revocación de los tokens de acceso
Es posible que tenga que revocar explícitamente un token de acceso. Por ejemplo, lo haría cuando los usuarios de la aplicación cambien la contraseña que usan para autenticarse en el servicio. El comando token revoke
invalida todos los tokens de acceso activos emitidos para la identidad.
az communication identity token revoke --user "<userId>" --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión. - Reemplace
<userId>
por su userId.
Eliminación de una identidad
Cuando se elimina una identidad, se revocan todos los tokens de acceso activos y se impide la emisión adicional de tokens de acceso para la identidad. También quita todo el contenido conservado asociado a la identidad.
az communication identity user delete --user "<userId>" --connection-string "<yourConnectionString>"
Realice este reemplazo en el código:
- Reemplace
<yourConnectionString>
por la cadena de conexión. - Reemplace
<userId>
por su userId.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- La versión más reciente de SDK de .NET Core para el sistema operativo.
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
Código final
Busque el código finalizado en GitHub.
Configurar el entorno
Creación de una aplicación de C#
En una ventana del símbolo del sistema, como cmd, PowerShell o Bash, ejecute el comando
dotnet new
para crear una nueva aplicación de consola con el nombreAccessTokensQuickstart
. Este comando crea un sencillo proyecto Hola mundo de C# con un solo archivo de origen,Program.cs
.dotnet new console -o AccessTokensQuickstart
Cambie el directorio a la carpeta de la aplicación recién creada y use el comando
dotnet build
para compilar la aplicación.cd AccessTokensQuickstart dotnet build
Se muestra una salida de
Hello World
simple. Si se muestra correctamente, la instalación funciona y puede empezar a escribir el código Azure Communication Services.
Instalar el paquete
En el directorio de aplicaciones, instale el paquete de la biblioteca de identidades de Azure Communication Services para .NET usando el comando dotnet add package
.
dotnet add package Azure.Communication.Identity
Instalación del marco de la aplicación
En el directorio del proyecto, complete los pasos siguientes:
- Abra el archivo
Program.cs
en un editor de texto. - Agregue una directiva
using
para incluir el espacio de nombresAzure.Communication.Identity
. - Para admitir código asincrónico, actualice la declaración del método
Main
.
Para comenzar, ejecute el código siguiente:
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
}
}
}
Autenticar el cliente
Inicialice CommunicationIdentityClient
con la cadena de conexión. El código siguiente, que se agrega al método Main
, recupera la cadena de conexión para el recurso de una variable de entorno denominada COMMUNICATION_SERVICES_CONNECTION_STRING
.
Para obtener más información, consulte Creación y administración de recursos de Communication Services > Almacenar la cadena de conexión.
// 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);
Como alternativa, puede separar el punto de conexión y la clave de acceso mediante la ejecución del código siguiente:
// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
string endpoint = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ENDPOINT");
string accessKey = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_ACCESSKEY");
var client = new CommunicationIdentityClient(new Uri(endpoint), new AzureKeyCredential(accessKey));
Si ya ha configurado una aplicación de Microsoft Entra, puede autenticarse mediante Microsoft Entra ID.
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);
Creación de una identidad
Para crear tokens de acceso, necesita una identidad. Azure Communication Services mantiene un directorio de identidad ligero para este propósito. Use el método createUser
para crear una nueva entrada en el directorio con un Id
único. Use la identidad más adelante para emitir tokens de acceso.
var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Almacene la identidad recibida con la asignación a los usuarios de la aplicación (por ejemplo, almacenándola en la base de datos del servidor de aplicaciones).
Emitir un token de acceso
Después de tener una identidad de Communication Services, use el método GetToken
para emitir un token de acceso para ella. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, consulte la lista de acciones admitidas en el modelo de identidad. También puede construir una nueva instancia de communicationUser
basada en una representación de cadena de una identidad de Azure Communication Service.
// 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);
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad expiresOn
indica la duración del token de acceso.
Establecimiento de un tiempo de expiración personalizado para el token
El tiempo de expiración del token predeterminado es de 24 horas, pero puede configurarlo proporcionando un valor entre una hora y 24 horas para el parámetro tokenExpiresIn
opcional. Al solicitar un nuevo token, especifique la longitud típica esperada de una sesión de comunicación para el tiempo de expiración 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);
Creación de una identidad y emisión de un token en la misma solicitud
Use el método CreateUserAndTokenAsync
para crear una identidad de Communication Services y, a la vez, emitir un token de acceso para ella. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, vea la lista de acciones admitidas en Autenticación para Azure Communication Services.
// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
var identityAndTokenResponse = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.VoIP });
// Retrieve the identity, token, and expiration date from the response
var identity = identityAndTokenResponse.Value.User;
var token = identityAndTokenResponse.Value.AccessToken.Token;
var expiresOn = identityAndTokenResponse.Value.AccessToken.ExpiresOn;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);
Actualización de un token de acceso
Para actualizar un token de acceso, pase una instancia del objeto CommunicationUserIdentifier
en GetTokenAsync
. Si ha almacenado este Id
y necesita crear un objeto CommunicationUserIdentifier
, puede hacerlo pasando el Id
almacenado al constructor CommunicationUserIdentifier
como se indica a continuación:
var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });
Revocación de los tokens de acceso
Es posible que tenga que revocar explícitamente un token de acceso. Por ejemplo, cuando los usuarios de la aplicación cambien la contraseña que usan para autenticarse en el servicio. El método RevokeTokensAsync
invalida todos los tokens de acceso activos que fueron emitidos para la identidad.
await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");
Eliminación de una identidad
Cuando se elimina una identidad, se revocan todos los tokens de acceso activos y se impide el problema adicional de tokens de acceso para la identidad. También quita todo el contenido conservado asociado a la identidad.
await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");
Ejecución del código
Cuando termine de crear el token de acceso, puede ejecutar la aplicación desde el directorio de la aplicación mediante el comando dotnet run
.
dotnet run
La salida de la aplicación describe cada acción completada:
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
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Versiones de Node.js, Active LTS y Maintenance LTS (se recomiendan 8.11.1 y 10.14.1).
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
Código final
Busque el código finalizado en GitHub.
Configurar el entorno
Creación de una aplicación Node.js
En una a terminal o una ventana del símbolo del sistema, cree un directorio para la aplicación y ábralo.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Ejecute
npm init -y
para crear un archivopackage.json
con la configuración predeterminada.npm init -y
Instalar el paquete
Use el comando npm install
para instalar Identity SDK de Azure Communication Services para JavaScript.
npm install @azure/communication-identity@latest --save
La opción --save
muestra la biblioteca como dependencia en el archivo package.json
.
Instalación del marco de la aplicación
Cree un archivo denominado
issue-access-token.js
en el directorio del proyecto y agregue el código siguiente: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); })
Autenticar el cliente
Cree una instancia CommunicationIdentityClient
de con la cadena de conexión. El código siguiente, que se agrega al método Main
, recupera la cadena de conexión para el recurso de una variable de entorno denominada COMMUNICATION_SERVICES_CONNECTION_STRING
.
Para obtener más información, consulte Creación y administración de recursos de Communication Services > Almacenar la cadena de conexión.
// 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);
Como alternativa, puede separar el punto de conexión y la clave de acceso mediante la ejecución del código siguiente:
// This code demonstrates how to fetch your endpoint and access key
// from an environment variable.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const accessKey = process.env["COMMUNICATION_SERVICES_ACCESSKEY"];
// Create the credential
const tokenCredential = new AzureKeyCredential(accessKey);
// Instantiate the identity client
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential)
Si ya ha configurado una aplicación de Microsoft Entra, puede autenticarse mediante Microsoft Entra ID.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);
Creación de una identidad
Para crear tokens de acceso, necesita una identidad. Azure Communication Services mantiene un directorio de identidad ligero para este propósito. Use el método createUser
para crear una nueva entrada en el directorio con un Id
único. Necesitará la identidad más adelante para emitir tokens de acceso.
let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);
Almacene la identidad recibida con la asignación a los usuarios de la aplicación (por ejemplo, almacenándola en la base de datos del servidor de aplicaciones).
Emitir un token de acceso
Use el método getToken
para emitir un token de acceso para la identidad de Communication Services. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, consulte la lista de acciones admitidas en el modelo de identidad. También puede construir una nueva instancia de communicationUser
basándose en una representación de cadena de la identidad de Azure Communication Service.
// 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);
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad expiresOn
indica la duración del token de acceso.
Establecimiento de un tiempo de expiración personalizado para el token
El tiempo de expiración del token predeterminado es de 24 horas (1440 minutos), pero puede configurarlo proporcionando un valor entre 60 minutos y 1440 minutos para el parámetro tokenExpiresInMinutes
opcional. Al solicitar un nuevo token, especifique la longitud típica esperada de una sesión de comunicación para el tiempo de expiración 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);
Creación de una identidad y emisión de un token en una llamada de método
Use el método createUserAndToken
para crear una identidad de Communication Services y, a la vez, emitir un token de acceso para ella. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Créelo con el ámbito 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);
Actualización de un token de acceso
A medida que expiren los tokens, debe actualizarlos. Para actualizar los tokens, llame a getToken
de nuevo con la misma identidad que se usa para emitir los tokens. También debe proporcionar los scopes
de los tokens actualizados.
// 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"]);
Revocación de los tokens de acceso
Es posible que tenga que revocar un token de acceso. Por ejemplo, lo hace cuando los usuarios de la aplicación cambien la contraseña que usan para autenticarse en el servicio. El método revokeTokens
invalida todos los tokens de acceso activos que fueron emitidos para la identidad.
await identityClient.revokeTokens(identityResponse);
console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);
Eliminación de una identidad
Cuando se elimina una identidad, se revocan todos los tokens de acceso activos y se impide el problema adicional de tokens de acceso para la identidad. También quita todo el contenido conservado asociado a la identidad.
await identityClient.deleteUser(identityResponse);
console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);
Ejecución del código
Desde un símbolo del sistema de la consola, vaya al directorio que contiene el archivoissue-access-token.jsy, a continuación, ejecute el siguiente comando node
para ejecutar la aplicación:
node ./issue-access-token.js
La salida de la aplicación describe cada acción completada:
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
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Python 3.8+.
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
Código final
Busque el código finalizado en GitHub.
Configurar el entorno
Creación de una nueva aplicación de Python
En una a terminal o una ventana del símbolo del sistema, cree un directorio para la aplicación y ábralo.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Use un editor de texto para crear un archivo denominado
issue-access-tokens.py
en el directorio raíz del proyecto. A continuación, agregue la estructura del programa, incluido un control de excepciones básico. Agregue todo el código fuente a este archivo.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)
Instalar el paquete
En el directorio de aplicaciones, instale Identity SDK de Azure Communication Services para Python con el comando pip install
.
pip install azure-communication-identity
Autenticar el cliente
Cree una instancia de un objeto CommunicationIdentityClient
con su cadena de conexión. El código siguiente, que se agrega al bloque try
, recupera la cadena de conexión para el recurso de una variable de entorno denominada COMMUNICATION_SERVICES_CONNECTION_STRING
.
Para obtener más información, consulte Creación y administración de recursos de Communication Services > Almacenar la cadena de conexión.
# 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)
Como alternativa, si ya ha configurado una aplicación de Microsoft Entra, puede autenticarse mediante Microsoft Entra ID.
endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())
Creación de una identidad
Para crear tokens de acceso, necesita una identidad. Azure Communication Services mantiene un directorio de identidad ligero para este propósito. Use el método create_user
para crear una nueva entrada en el directorio con un Id
único. La identidad es necesaria más adelante para emitir tokens de acceso.
identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])
Almacene la identidad recibida con la asignación a los usuarios de la aplicación (por ejemplo, almacenándola en la base de datos del servidor de aplicaciones).
Emitir un token de acceso
Use el método get_token
para emitir un token de acceso para la identidad de Communication Services. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, consulte la lista de acciones admitidas en el modelo de identidad. También puede construir una nueva instancia de parámetro CommunicationUserIdentifier
basada en una representación de cadena de la identidad de Azure Communication Service.
# 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)
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad de respuesta expires_on
indica la duración del token de acceso.
Establecimiento de un tiempo de expiración personalizado para el token
El tiempo de expiración del token predeterminado es de 24 horas, pero puede configurarlo proporcionando un valor entre una hora y 24 horas para el parámetro token_expires_in
opcional. Al solicitar un nuevo token, especifique la longitud típica esperada de una sesión de comunicación para el tiempo de expiración 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)
Creación de una identidad y emisión de un token de acceso en la misma solicitud
Use el método create_user_and_token
para crear una identidad de Communication Services y, a la vez, emitir un token de acceso para ella. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, vea la lista de acciones admitidas en Autenticación para Azure Communication Services.
# Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
identity_token_result = client.create_user_and_token(["voip"])
# Get the token details from the response
identity = identity_token_result[0]
token = identity_token_result[1].token
expires_on = identity_token_result[1].expires_on
print("\nCreated an identity with ID: " + identity.properties['id'])
print("\nIssued an access token with 'voip' scope that expires at " + expires_on + ":")
print(token)
Actualización de un token de acceso
Para actualizar un token de acceso, use el objeto CommunicationUserIdentifier
para volver a emitir un token pasando la identidad existente:
# The existingIdentity value represents the Communication Services identity that's stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])
Revocación de los tokens de acceso
Es posible que tenga que revocar explícitamente un token de acceso. Por ejemplo, cuando los usuarios de la aplicación cambien la contraseña que usan para autenticarse en el servicio. El método revoke_tokens
invalida todos los tokens de acceso activos que fueron emitidos para la identidad.
client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])
Eliminación de una identidad
Cuando se elimina una identidad, se revocan todos los tokens de acceso activos y se impide la emisión adicional de tokens de acceso para la identidad. También quita todo el contenido conservado asociado a la identidad.
client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])
Ejecución del código
Desde un símbolo del sistema de la consola, vaya al directorio que contiene el issue-access-tokens.py
, a continuación, ejecute el siguiente comando python
para ejecutar la aplicación.
python ./issue-access-tokens.py
La salida generada describe cada acción completada:
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
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Kit de desarrollo de Java (JDK) versión 8 o posterior.
- Apache Maven.
- Un recurso activo de Communication Services y una cadena de conexión. Cree un recurso de Communication Services.
Código final
Busque el código finalizado en GitHub.
Configurar el entorno
Creación de una aplicación Java
En una terminal o una ventana del símbolo del sistema, vaya al directorio donde desea crear la aplicación Java. Para generar un proyecto de Java a partir de la plantilla maven-archetype-quickstart, ejecute el código siguiente:
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Observe que la tarea generate
crea un directorio con el mismo nombre que artifactId
. En este directorio, el directorio src/main/java
contiene el código fuente del proyecto, el directorio src/test/java
contiene el origen de la prueba y el archivo pom.xml
es el modelo de objetos del proyecto o POM. Este archivo se usa para los parámetros de configuración del proyecto.
Instalación de los paquetes de Communication Services
Abra el archivo pom.xml
en el editor de texto. Agregue el siguiente elemento de dependencia al grupo de dependencias:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-identity</artifactId>
<version>[1.4.0,)</version>
</dependency>
Este código indica a Maven que instale el SDK de identidad de Communication Services, que debe usar más adelante.
Instalación del marco de la aplicación
En el directorio del proyecto, complete los pasos siguientes:
- Vaya al directorio
/src/main/java/com/communication/quickstart
. - Abra el archivo
App.java
en un editor. - Reemplace la instrucción
System.out.println("Hello world!");
. - Agregue las directivas
import
.
Use el código siguiente para empezar:
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
}
}
Autenticar el cliente
Cree una instancia de CommunicationIdentityClient
con la clave de acceso y el punto de conexión del recurso. Para obtener más información, consulte Creación y administración de recursos de Communication Services > Almacenar la cadena de conexión.
También puede iniciar el cliente con cualquier cliente HTTP personalizado que implemente la interfaz com.azure.core.http.HttpClient
.
En el archivo App.java
, agregue el código siguiente al método main
:
// You can find your endpoint and access key from your resource in the Azure portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
String accessKey = "SECRET";
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.endpoint(endpoint)
.credential(new AzureKeyCredential(accessKey))
.buildClient();
En lugar de proporcionar el punto de conexión y la clave de acceso, puede proporcionar toda la cadena de conexión mediante el método connectionString()
.
// You can find your connection string from your Communication Services resource in the Azure portal
String connectionString = "<connection_string>";
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.connectionString(connectionString)
.buildClient();
Si ya ha configurado una aplicación de Microsoft Entra, puede autenticarse mediante 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();
Creación de una identidad
Para crear tokens de acceso, necesita una identidad. Azure Communication Services mantiene un directorio de identidad ligero para este propósito. Use el método createUser
para crear una nueva entrada en el directorio con un Id
único.
CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());
La identidad creada es necesaria más adelante para emitir tokens de acceso. Almacene la identidad recibida con la asignación a los usuarios de la aplicación (por ejemplo, almacenándola en la base de datos del servidor de aplicaciones).
Emitir un token de acceso
Use el método getToken
para emitir un token de acceso para la identidad de Communication Services. El parámetro scopes
define un conjunto de roles y permisos de token de acceso. Para obtener más información, consulte la lista de acciones admitidas en el modelo de identidad.
En el código siguiente, use la variable de usuario que creó en el paso anterior para obtener 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);
Los tokens de acceso son credenciales de corta duración que deben volver a emitirse. Si no lo hace, podría provocar una interrupción de la experiencia de los usuarios de la aplicación. La propiedad expiresAt
indica la duración del token de acceso.
Establecimiento de un tiempo de expiración personalizado para el token
El tiempo de expiración del token predeterminado es de 24 horas, pero puede configurarlo proporcionando un valor entre una hora y 24 horas para el parámetro tokenExpiresIn
opcional. Al solicitar un nuevo token, especifique la longitud típica esperada de una sesión de comunicación para el tiempo de expiración 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);
Creación de una identidad y emisión de un token en una solicitud
Como alternativa, puede usar el método "createUserAndToken" para crear una nueva entrada en el directorio con un único Id
y emitir un token de acceso al mismo tiempo.
//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);
Actualización de un token de acceso
Para actualizar un token de acceso, use el objeto CommunicationUserIdentifier
para volver a emitirlo:
// existingIdentity represents the Communication Services identity that's stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);
Revocación de un token de acceso
Es posible que tenga que revocar explícitamente un token de acceso. Por ejemplo, lo haría cuando los usuarios de la aplicación cambien la contraseña que usan para autenticarse en el servicio. El método revokeTokens
invalida todos los tokens de acceso activos para un usuario determinado. En el código siguiente, puede usar el usuario creado anteriormente.
communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());
Eliminación de una identidad
Cuando se elimina una identidad, se revocan todos los tokens de acceso activos y se impide la emisión adicional de tokens de acceso para la identidad. También quita todo el contenido conservado asociado a la identidad.
communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());
Ejecución del código
Vaya al directorio que contiene el archivo
pom.xml
.Compile el proyecto utilizando el siguiente comando
mvn
:mvn compile
compile el paquete:
mvn package
Ejecute el siguiente comando
mvn
para ejecutar la aplicación:mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
La salida describe cada acción completada:
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
Requisitos previos
Creación de los tokens de acceso
En Azure Portal, vaya a la hoja Identidades y tokens de acceso de usuario en el recurso de Communication Services.
Elija el ámbito de los tokens de acceso. Puede elegir ninguno, uno o varios servicios.
Seleccione Generar.
El sistema genera una identidad y el token de acceso de usuario correspondiente.
Copie estas cadenas y úselas en las aplicaciones de ejemplo y otros escenarios de prueba.
Requisitos previos
Una cuenta de Azure con una suscripción activa. Cree una cuenta de Azure de forma gratuita.
Un recurso activo de Azure Communication Services. Creación de un recurso de Communication Services.
Un recurso de Azure Logic Apps activo (aplicación lógica). Cree un flujo de trabajo de aplicación lógica de Consumo en blanco con el desencadenador que quiere usar. Actualmente, el conector de identidad de Azure Communication Services solo proporciona acciones, por lo que la aplicación lógica requiere un desencadenador, como mínimo.
Crear usuario
Agregue un nuevo paso en el flujo de trabajo mediante el conector de identidad de Azure Communication Services. Complete estos pasos en Power Automate con el flujo de Power Automate abierto en modo de edición.
Abra el diseñador. En el paso en el que quiera agregar la nueva acción, seleccione Nuevo paso. Como alternativa, para agregar la nueva acción entre pasos, mantenga el puntero sobre la flecha entre esos pasos, seleccione el signo más (+) y seleccione Agregar una acción.
En la casilla Seleccionar búsqueda de operaciones, introduzca Identidad de Communication Services. En la lista de acciones, seleccione Crear un usuario.
Proporcionar la cadena de conexión. Puede encontrarlo en Microsoft Azure Portal, en el recurso de Azure Communication Service. Seleccione la opción Claves en el menú del panel izquierdo para ver la cadena de conexión.
Proporcione un nombre de conexión.
Haga clic en Crear
Esta acción genera un identificador de usuario, que es una identidad de usuario de Communication Services. Además, si hace clic en Mostrar opciones avanzadas y selecciona Ámbito de token, la acción también genera un token de acceso y su hora de expiración con el ámbito especificado.
Emisión de un token de acceso de usuario
Después de tener una identidad de Communication Services, puede emitir un token de acceso. Complete los pasos siguientes:
Agregar una acción nueva e ingresar la identidad de Communication Services en el cuadro de búsqueda. En la lista de acciones, seleccione Emitir un token de acceso de usuario.
Ahora puede usar la salida del id. de usuario del paso anterior Crear un usuario.
Especifique el ámbito del token: VoIP o chat. Obtenga más información sobre los tokens y la autenticación.
El sistema genera un token de acceso y su tiempo de expiración con el ámbito especificado.
Revocación de tokens de acceso de usuario
Después de tener una identidad de Communication Services, puede usar la acción Emitir un token de acceso de usuario para revocar un token de acceso. Complete los pasos siguientes:
Agregar una acción nueva e ingresar la identidad de Communication Services en el cuadro de búsqueda. En la lista de acciones, seleccione Revocar tokens de acceso de usuario.
Especificar el id. de usuario.
El sistema revoca todos los tokens de acceso del usuario especificado, no hay salidas para esta acción.
Eliminar un usuario
Después de tener una identidad de Communication Services, puede usar la acción Emitir un token de acceso de usuario para eliminar un token de acceso. Complete los pasos siguientes:
Agregar una acción nueva e ingresar la identidad de Communication Services en el cuadro de búsqueda. En la lista de acciones, seleccione Eliminar un usuario.
Especificar el id. de usuario.
El sistema quita el usuario y revoca todos los tokens de acceso del usuario especificado, no hay salidas para esta acción.
Comprobación de la aplicación lógica
Para iniciar manualmente el flujo de trabajo, seleccione Ejecutar en la barra de herramientas del diseñador. El flujo de trabajo crea un usuario, emite un token de acceso para ese usuario y, a continuación, lo quita y elimina al usuario.
Para obtener más información, consulte Cómo ejecutar el flujo de trabajo. Puede comprobar las salidas de estas acciones después de que el flujo de trabajo se ejecute correctamente.
Uso de la identidad para la supervisión y las métricas
El id. de usuario actúa como una clave principal para los registros y las métricas recopilados a través de Azure Monitor. Para ver todas las llamadas de un usuario, por ejemplo, puede configurar la autenticación para asignar una identidad específica de Azure Communication Services (o identidades) a un único usuario.
Para más información, vea:
Limpieza de recursos
Si quiere limpiar y quitar una suscripción de Communication Services, elimine el recurso o el grupo de recursos. Al eliminar un grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. Para más información, consulte Inicio rápido: Creación y administración de recursos de Communication Services > Limpieza de recursos.
Para limpiar el flujo de trabajo de la aplicación lógica y los recursos relacionados, consulte Creación de un flujo de trabajo de aplicación lógica de consumo de ejemplo mediante Azure Portal > Limpieza de recursos.
Pasos siguientes
En este artículo se describe cómo crear un usuario y eliminar un usuario. También se describe cómo emitir un token de acceso a un usuario y quitar un token de acceso de usuario mediante el conector de identidad de Azure Communication Services. Para más información, consulte Conector de identidad de Azure Communication Services.
Para ver cómo otros conectores usan los tokens, consulte cómo enviar un mensaje de chat desde Power Automate mediante Azure Communication Services.
Para más información sobre cómo enviar un correo electrónico mediante el conector de correo electrónico de Azure Communication Services, consulte Envío de mensajes de correo electrónico en Power Automate con Azure Communication Services.