Поделиться через


Создание маркеров доступа и управление ими

Маркеры доступа позволяют Службы коммуникации Azure пакетам SDK выполнять проверку подлинности непосредственно в Службы коммуникации Azure в качестве определенного удостоверения. Необходимо создать маркеры доступа, если вы хотите, чтобы пользователи присоединялись к потоку звонков или чата в приложении.

В этой статье описывается, как использовать пакеты SDK Службы коммуникации Azure для создания удостоверений и управления маркерами доступа. В рабочих случаях использования рекомендуется создавать маркеры доступа на стороне сервера, как описано в проектировании архитектуры мобильных устройств.

Необходимые компоненты

Настройка среды

Добавление расширения

Добавьте расширение Службы коммуникации Azure для Azure CLI с помощью az extension команды.

az extension add --name communication

Вход в Azure CLI

Вам нужно войти в Azure CLI. Вы можете войти в систему, выполнив az login команду из терминала, а затем указать свои учетные данные.

(Необязательно) Использование операций идентификации Azure CLI без передачи строка подключения

Можно настроить AZURE_COMMUNICATION_CONNECTION_STRING переменную среды для использования операций идентификации Azure CLI без необходимости --connection_string передавать строка подключения. Чтобы настроить переменную среды, откройте окно консоли и выберите операционную систему на следующих вкладках. Замените <yourConnectionString> фактической строкой подключения.

Откройте окно консоли и введите следующую команду:

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

После добавления переменной среды может потребоваться перезапустить все запущенные программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

Хранение маркера доступа в переменной среды

Чтобы настроить переменную среды, откройте окно консоли и выберите операционную систему на следующих вкладках. Замените <yourAccessToken> фактическим маркером доступа.

Откройте окно консоли и введите следующую команду:

setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"

После добавления переменной среды может потребоваться перезапустить все запущенные программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

Операции

Создание удостоверения

Чтобы создать маркеры доступа, вам потребуется удостоверение. Службы коммуникации Azure позволяют использовать упрощенный каталог удостоверений. user create Используйте команду, чтобы создать новую запись в каталоге с уникальнымId. Удостоверение требуется позже для выдачи маркеров доступа.

az communication identity user create --connection-string "<yourConnectionString>"
  • Замените <yourConnectionString> строка подключения.

Создание удостоверения и выдача маркера доступа в том же запросе

Выполните следующую команду, чтобы создать удостоверение Служб коммуникации и выдать маркер доступа для него одновременно. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий проверки подлинности в Службы коммуникации Azure.

az communication identity token issue --scope chat --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.

Проблема маркера доступа

Выполните следующую команду, чтобы выдать маркер доступа для удостоверения служб коммуникации. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий проверки подлинности в Службы коммуникации Azure.

az communication identity token issue --scope chat --user "<userId>" --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <userId> идентификатором пользователя.

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению работы пользователей приложения. Свойство ответа expires_on указывает время существования маркера доступа.

Проблема маркера доступа с несколькими областями

Выполните следующую команду, чтобы выдать маркер доступа с несколькими областями для удостоверений служб коммуникации. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий в модели удостоверений.

az communication identity token issue --scope chat voip --user "<userId>" --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <userId> идентификатором пользователя.

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению работы пользователей приложения. Свойство ответа expires_on указывает время существования маркера доступа.

Exchange a Microsoft Entra access token of the Teams user for a Communication Identity access token

token get-for-teams-user Используйте команду для выдачи маркера доступа для пользователя Teams, который можно использовать с пакетами SDK Службы коммуникации Azure.

az communication identity token get-for-teams-user --aad-token "<yourAadToken>" --client "<yourAadApplication>" --aad-user "<yourAadUser>" --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <yourAadUser> идентификатором пользователя Microsoft Entra.
  • Замените <yourAadApplication> идентификатором приложения Microsoft Entra.
  • Замените <yourAadToken> маркер доступа Microsoft Entra.

Отмена маркеров доступа

Возможно, потребуется явно отозвать маркер доступа. Например, при изменении пароля, используемого пользователями приложений для проверки подлинности в службе. Команда token revoke отменяет все активные маркеры доступа, выданные удостоверению.

az communication identity token revoke --user "<userId>" --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <userId> идентификатором пользователя.

Удаление удостоверения

При удалении удостоверения вы отменяете все активные маркеры доступа и предотвращаете дальнейшую выдачу маркеров доступа для удостоверения. Это также удаляет все сохраняемое содержимое, связанное с удостоверением.

az communication identity user delete --user "<userId>" --connection-string "<yourConnectionString>"

Сделайте эту замену в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <userId> идентификатором пользователя.

Необходимые компоненты

Окончательный код

Найдите завершенный код на сайте GitHub.

Настройка среды

Создание нового приложения C#

  1. В окне командной строки, например cmd, PowerShell или Bash, выполните dotnet new команду, чтобы создать консольное приложение с именем AccessTokensQuickstart. Эта команда создает простой проект Hello World C# с одним исходным файлом Program.cs.

    dotnet new console -o AccessTokensQuickstart
    
  2. Измените каталог на только что созданную папку приложения и выполните команду dotnet build, чтобы скомпилировать приложение.

    cd AccessTokensQuickstart
    dotnet build
    

    Отображаются простые Hello World выходные данные. Если он отображается правильно, программа установки работает и вы можете приступить к написанию кода Службы коммуникации Azure.

Установка пакета

Оставаясь в каталоге приложения, установите пакет библиотеки удостоверений Служб коммуникации Azure для .NET с помощью команды dotnet add package.

dotnet add package Azure.Communication.Identity

Настройка платформы приложения

В каталоге проекта выполните следующие действия.

  1. Откройте файл Program.cs в текстовом редакторе.
  2. Добавьте директиву using для включения Azure.Communication.Identity пространства имен.
  3. Чтобы поддерживать асинхронный код, обновите Main объявление метода.

Чтобы начать, выполните следующий код:

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
        }
    }
}

аутентификация клиента;

Инициализация CommunicationIdentityClient с помощью строка подключения. Следующий код, добавляемый в Main метод, извлекает строка подключения ресурса из переменной среды с именемCOMMUNICATION_SERVICES_CONNECTION_STRING.

Дополнительные сведения см. в статье "Создание ресурсов > служб коммуникации и управление ими" в хранилище строка подключения.

// 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);

Кроме того, можно разделить конечную точку и ключ доступа, выполнив следующий код:

// 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));

Если вы уже настроили приложение Microsoft Entra, вы можете пройти проверку подлинности с помощью идентификатора Microsoft Entra.

TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);

Создание удостоверения

Чтобы создать маркеры доступа, вам потребуется удостоверение. Службы коммуникации Azure позволяют использовать упрощенный каталог удостоверений. Чтобы создать новую запись в каталоге с уникальным идентификатором (Id), используйте метод createUser. Используйте удостоверение позже для выдачи маркеров доступа.

var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");

Сохраните полученное удостоверение с сопоставлением пользователей приложения (например, сохраняя его в базе данных сервера приложений).

Выдача маркера доступа

После того как у вас есть удостоверение служб коммуникации, используйте GetToken метод для выдачи маркера доступа. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий в модели удостоверений. Можно также создать новый экземпляр communicationUser на основе строкового представления удостоверения Службы коммуникации 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);

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению взаимодействия с пользователем приложения. Свойство expiresOn обозначает время существования маркера доступа.

Установка срока действия пользовательского маркера

Срок действия маркера по умолчанию составляет 24 часа, но его можно настроить, предоставив значение от часа до 24 часов необязательному параметру tokenExpiresIn. При запросе нового маркера укажите ожидаемую длину сеанса обмена данными в течение срока действия маркера.

// 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);

Создание удостоверения и выдача маркера в том же запросе

Чтобы создать удостоверение Служб коммуникации и одновременно выдать маркер доступа для него, можно воспользоваться методом CreateUserAndTokenAsync. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий проверки подлинности в Службы коммуникации 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);

Обновление маркера доступа

Чтобы обновить маркер доступа, передайте экземпляр объекта CommunicationUserIdentifier в метод GetTokenAsync. Если вы сохранили это Id и хотите создать новый CommunicationUserIdentifier, это можно сделать, передав сохраненный Id в CommunicationUserIdentifier конструктор следующим образом:

var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });

Отмена маркеров доступа

Возможно, потребуется явно отозвать маркер доступа. Например, когда пользователи приложения изменяют пароль, используемый для проверки подлинности в службе. Метод RevokeTokensAsync отменяет все активные маркеры доступа, выданные удостоверению.

await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");

Удаление удостоверения

При удалении удостоверения вы отменяете все активные маркеры доступа и предотвращаете дальнейшую проблему маркеров доступа для удостоверения. Это также удаляет все сохраняемое содержимое, связанное с удостоверением.

await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");

Выполнение кода

После завершения создания маркера доступа можно запустить приложение из каталога приложения с помощью dotnet run команды.

dotnet run

Выходные данные приложения описывают каждое завершенное действие:

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

Необходимые компоненты

Окончательный код

Найдите завершенный код на сайте GitHub.

Настройка среды

Создание нового приложения Node.js

  1. В окне терминала или командной строки создайте новый каталог для приложения, а затем откройте его.

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. Выполните команду npm init -y, чтобы создать файл package.json с параметрами по умолчанию.

    npm init -y
    

Установка пакета

Используйте команду npm install, чтобы установить пакет SDK для Служб коммуникации Azure для удостоверений для JavaScript.

npm install @azure/communication-identity@latest --save

В параметре --save библиотека указывается в качестве зависимости в файле package.json.

Настройка платформы приложения

  1. Создайте файл с именем issue-access-token.js в каталоге проекта и добавьте следующий код:

    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);
    })
    

аутентификация клиента;

Создайте CommunicationIdentityClient экземпляр строка подключения. Следующий код, добавляемый в Main метод, извлекает строка подключения ресурса из переменной среды с именемCOMMUNICATION_SERVICES_CONNECTION_STRING.

Дополнительные сведения см. в статье "Создание ресурсов > служб коммуникации и управление ими" в хранилище строка подключения.

// 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);

Кроме того, можно разделить конечную точку и ключ доступа, выполнив следующий код:

// 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)

Если вы уже настроили приложение Microsoft Entra, вы можете пройти проверку подлинности с помощью идентификатора Microsoft Entra.

const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);

Создание удостоверения

Чтобы создать маркеры доступа, вам потребуется удостоверение. Службы коммуникации Azure позволяют использовать упрощенный каталог удостоверений. Чтобы создать новую запись в каталоге с уникальным идентификатором (Id), используйте метод createUser. Вам потребуется удостоверение позже, чтобы выдавать маркеры доступа.

let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);

Сохраните полученное удостоверение с сопоставлением пользователей приложения (например, сохраняя его в базе данных сервера приложений).

Выдача маркера доступа

getToken Используйте метод для выдачи маркера доступа для удостоверения служб коммуникации. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий в модели удостоверений. Вы также можете создать новый экземпляр communicationUser на основе строкового представления удостоверения Службы коммуникации 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);

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению взаимодействия с пользователем приложения. Свойство expiresOn обозначает время существования маркера доступа.

Установка срока действия пользовательского маркера

Срок действия маркера по умолчанию составляет 24 часа (1440 минут), но его можно настроить, предоставив значение от 60 минут до 1440 минут необязательному параметру tokenExpiresInMinutes. При запросе нового маркера укажите ожидаемую длину сеанса обмена данными в течение срока действия маркера.

// 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);

Создание удостоверения и выдача маркера в одном вызове метода

Чтобы создать удостоверение Служб коммуникации и одновременно выдать маркер доступа для него, можно воспользоваться методом createUserAndToken. Параметр scopes определяет набор разрешений маркера доступа и ролей. Создайте его с областью 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);

Обновление маркера доступа

По истечении срока действия маркеров их необходимо обновить. Чтобы обновить маркеры, вызовите getToken еще раз с тем же удостоверением, которое использовалось для выдачи маркеров. Для обновляемых токенов также необходимо указать scopes.

// 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"]);

Отмена маркеров доступа

Возможно, потребуется отозвать маркер доступа. Например, при изменении пароля, используемого пользователями приложений для проверки подлинности в службе. Метод revokeTokens отменяет все активные маркеры доступа, выданные удостоверению.

await identityClient.revokeTokens(identityResponse);

console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);

Удаление удостоверения

При удалении удостоверения вы отменяете все активные маркеры доступа и предотвращаете дальнейшую проблему маркеров доступа для удостоверения. Это также удаляет все сохраняемое содержимое, связанное с удостоверением.

await identityClient.deleteUser(identityResponse);

console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);

Выполнение кода

В командной строке консоли перейдите в каталог, содержащий файл issue-access-token.js , а затем выполните следующую node команду, чтобы запустить приложение:

node ./issue-access-token.js

Выходные данные приложения описывают каждое завершенное действие:

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

Необходимые компоненты

Окончательный код

Найдите завершенный код на сайте GitHub.

Настройка среды

Создание приложения Python

  1. В окне терминала или командной строки создайте новый каталог для приложения, а затем откройте его.

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. Используйте текстовый редактор для создания файла, вызываемого issue-access-tokens.py в корневом каталоге проекта. Затем добавьте структуру для программы, включая базовую обработку исключений. В этот файл добавляется весь исходный код.

    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)
    

Установка пакета

В каталоге приложений установите пакет SDK для удостоверений Службы коммуникации Azure для Python с помощью pip install команды.

pip install azure-communication-identity

аутентификация клиента;

Создайте экземпляр CommunicationIdentityClient с использованием строки подключения. Следующий код, добавляемый в try блок, извлекает строка подключения ресурса из переменной среды с именем COMMUNICATION_SERVICES_CONNECTION_STRING.

Дополнительные сведения см. в статье "Создание ресурсов > служб коммуникации и управление ими" в хранилище строка подключения.

# 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)

Кроме того, если вы уже настроили приложение Microsoft Entra, вы можете пройти проверку подлинности с помощью идентификатора Microsoft Entra.

endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())

Создание удостоверения

Чтобы создать маркеры доступа, вам потребуется удостоверение. Службы коммуникации Azure позволяют использовать упрощенный каталог удостоверений. Чтобы создать новую запись в каталоге с уникальным идентификатором (Id), используйте метод create_user. Удостоверение потребуется позже для выдачи маркеров доступа.

identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])

Сохраните полученное удостоверение с сопоставлением пользователей приложения (например, сохраняя его в базе данных сервера приложений).

Выдача маркера доступа

get_token Используйте метод для выдачи маркера доступа для удостоверения служб коммуникации. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий в модели удостоверений. Можно также создать новый экземпляр параметра CommunicationUserIdentifier на основе строкового представления удостоверения Службы коммуникации 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)

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению взаимодействия с пользователем приложения. Свойство ответа expires_on указывает время существования маркера доступа.

Установка срока действия пользовательского маркера

Срок действия маркера по умолчанию составляет 24 часа, но его можно настроить, предоставив значение от часа до 24 часов необязательному параметру token_expires_in. При запросе нового маркера укажите ожидаемую длину сеанса обмена данными в течение срока действия маркера.

# 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)

Создание удостоверения и выдача маркера доступа в том же запросе

Чтобы создать удостоверение Служб коммуникации и одновременно выдать маркер доступа для него, можно воспользоваться методом create_user_and_token. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий проверки подлинности в Службы коммуникации 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)

Обновление маркера доступа

Чтобы обновить маркер доступа, используйте объект CommunicationUserIdentifier, чтобы повторно выдать маркер, передав существующее удостоверение:

# The existingIdentity value represents the Communication Services identity that's stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])

Отмена маркеров доступа

Возможно, потребуется явно отозвать маркер доступа. Например, когда пользователи приложения изменяют пароль, используемый для проверки подлинности в службе. Метод revoke_tokens отменяет все активные маркеры доступа, выданные удостоверению.

client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])

Удаление удостоверения

При удалении удостоверения вы отменяете все активные маркеры доступа и предотвращаете дальнейшую выдачу маркеров доступа для удостоверения. Это также удаляет все сохраняемое содержимое, связанное с удостоверением.

client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])

Выполнение кода

В командной строке консоли перейдите в каталог, содержащий issue-access-tokens.py файл, а затем выполните следующую python команду, чтобы запустить приложение.

python ./issue-access-tokens.py

Созданные выходные данные описывают каждое завершенное действие:

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

Необходимые компоненты

Окончательный код

Найдите завершенный код на сайте GitHub.

Настройка среды

Создание нового приложения Java

В окне терминала или командной строки перейдите в каталог, в котором нужно создать приложение Java. Чтобы создать проект Java из шаблона maven-archetype-quickstart, выполните следующий код:

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Обратите внимание, что задача создает каталог с тем же именем, что generate artifactIdи . В этом каталоге src/main/java каталог содержит исходный код проекта, src/test/java каталог содержит источник теста, а pom.xml файл — объектную модель проекта или POM проекта. Этот файл используется для параметров конфигурации проекта.

Установка пакетов служб коммуникации

Откройте файл pom.xml в текстовом редакторе. Добавьте следующий элемент зависимостей в группу зависимостей:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-identity</artifactId>
    <version>[1.4.0,)</version>
</dependency>

Этот код предписывает Maven установить пакет SDK удостоверений служб коммуникации, который необходимо использовать позже.

Настройка платформы приложения

В каталоге проекта выполните следующие действия.

  1. Перейдите в /src/main/java/com/communication/quickstart каталог.
  2. Откройте файл в редакторе App.java .
  3. Замените инструкцию System.out.println("Hello world!"); .
  4. Добавьте директивы import.

Используйте следующий код:

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
    }
}

аутентификация клиента;

Создайте экземпляр CommunicationIdentityClient с помощью ключа доступа и конечной точки ресурса. Дополнительные сведения см. в статье "Создание ресурсов > служб коммуникации и управление ими" в хранилище строка подключения.

Вы также можете инициализировать клиент с помощью любого пользовательского HTTP-клиента, реализующего com.azure.core.http.HttpClient интерфейс.

App.java В файле добавьте следующий код в 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();

Вместо предоставления конечной точки и ключа доступа можно предоставить все строка подключения с помощью 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();

Если вы уже настроили приложение Microsoft Entra, вы можете пройти проверку подлинности с помощью идентификатора Microsoft Entra.

String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();

CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
        .endpoint(endpoint)
        .credential(credential)
        .buildClient();

Создание удостоверения

Чтобы создать маркеры доступа, вам потребуется удостоверение. Службы коммуникации Azure позволяют использовать упрощенный каталог удостоверений. Чтобы создать новую запись в каталоге с уникальным идентификатором (Id), используйте метод createUser.

CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());

Созданное удостоверение потребуется позже для выдачи маркеров доступа. Сохраните полученное удостоверение с сопоставлением пользователей приложения (например, сохраняя его в базе данных сервера приложений).

Выдача маркера доступа

getToken Используйте метод для выдачи маркера доступа для удостоверения служб коммуникации. Параметр scopes определяет набор разрешений маркера доступа и ролей. Дополнительные сведения см. в списке поддерживаемых действий в модели удостоверений.

В следующем коде используйте пользовательную переменную, созданную на предыдущем шаге, чтобы получить маркер.

// 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);

Маркеры доступа — это недолговечные учетные данные, которые необходимо выдавать повторно. Это может привести к нарушению взаимодействия с пользователем приложения. Свойство expiresAt обозначает время существования маркера доступа.

Установка срока действия пользовательского маркера

Срок действия маркера по умолчанию составляет 24 часа, но его можно настроить, предоставив значение от часа до 24 часов необязательному параметру tokenExpiresIn. При запросе нового маркера укажите ожидаемую длину сеанса обмена данными в течение срока действия маркера.

// 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);

Создание удостоверения и выдача маркера в одном запросе

Кроме того, можно использовать метод createUserAndToken для создания новой записи в каталоге с уникальным Id и выдачой маркера доступа одновременно.

//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);

Обновление маркера доступа

Чтобы обновить маркер доступа, используйте CommunicationUserIdentifier объект для повторной отправки:

// existingIdentity represents the Communication Services identity that's stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);

Отзыв маркера доступа

Возможно, потребуется явно отозвать маркер доступа. Например, при изменении пароля, используемого пользователями приложений для проверки подлинности в службе. Метод revokeTokens делает недействительными все активные маркеры доступа для конкретного пользователя. В следующем коде можно использовать ранее созданного пользователя.

communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());

Удаление удостоверения

При удалении удостоверения вы отменяете все активные маркеры доступа и предотвращаете дальнейшую выдачу маркеров доступа для удостоверения. Это также удаляет все сохраняемое содержимое, связанное с удостоверением.

communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());

Выполнение кода

  1. Перейдите в каталог, содержащий pom.xml файл.

  2. Скомпилируйте проект с помощью следующей mvn команды:

    mvn compile
    
  3. создайте пакет:

    mvn package
    
  4. Выполните следующую mvn команду, чтобы выполнить приложение:

    mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
    

Выходные данные описывают каждое завершенное действие:

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

Необходимые компоненты

Создание маркеров доступа

  1. В портал Azure перейдите в колонку "Удостоверения и маркеры доступа пользователей" в ресурсе Служб коммуникации.

  2. Выберите область действия маркеров доступа. Вы можете выбрать ни один, один или несколько служб.

  3. Выберите Создать.

    Снимок экрана: области маркеров удостоверения и доступа, в которых вы выбрали

    Система создает удостоверение и соответствующий маркер доступа пользователя.

  4. Скопируйте эти строки и используйте их в примерах приложений и других сценариях тестирования.

    Снимок экрана: маркеры удостоверения и доступа с датой окончания срока действия

Необходимые компоненты

Создать пользователя

Добавьте новый шаг в рабочий процесс с помощью соединителя Службы коммуникации Azure Identity. Выполните следующие действия в Power Automate с открытым потоком Power Automate в режиме редактирования .

  1. Откройте конструктор. На шаге, в котором нужно добавить новое действие, выберите новый шаг. Кроме того, чтобы добавить новое действие между шагами, наведите указатель мыши на стрелку между этими шагами, выберите знак плюса (+) и нажмите кнопку "Добавить действие".

  2. В поле поиска по операции введите удостоверение служб коммуникации. В списке действий выберите "Создать пользователя".

    Снимок экрана: действие создания пользователя Службы коммуникации Azure соединителя удостоверений.

  3. Укажите строку подключения. Его можно найти в microsoft портал Azure в ресурсе Службы коммуникации Azure. Выберите параметр "Ключи" в меню слева, чтобы просмотреть строку подключения.

    Снимок экрана: страница

  4. Укажите имя подключения.

  5. Нажмите кнопку Создать.

    Это действие создает идентификатор пользователя, который является удостоверением пользователя служб коммуникации. Кроме того, если щелкнуть "Показать дополнительные параметры " и выбрать область маркера, действие также создает маркер доступа и его срок действия с указанной областью.

    Снимок экрана: действие создания пользователя Службы коммуникации Azure соединителя.

    Снимок экрана: расширенные параметры Службы коммуникации Azure соединителя Create user action advanced.

Выдача маркера доступа пользователя

После того как у вас есть удостоверение служб коммуникации, вы можете выдать маркер доступа. Выполните следующие действия:

  1. Добавьте новое действие и введите удостоверение служб коммуникации в поле поиска. В списке действий выберите " Проблема маркера доступа пользователя".

    Снимок экрана: действие маркера доступа Службы коммуникации Azure соединителя удостоверений.

  2. Теперь можно использовать выходные данные идентификатора пользователя из предыдущего шага создания пользователя .

  3. Укажите область маркера: VoIP или чат. Дополнительные сведения о маркерах и проверке подлинности.

    Снимок экрана, на котором показано действие маркера доступа соединителя Службы коммуникации Azure удостоверения, указывающее область маркера.

Система создает маркер доступа и его срок действия с указанной областью.

Отзыв маркеров доступа пользователей

После получения удостоверения Служб коммуникации можно использовать действие маркера доступа пользователя для отзыва маркера доступа. Выполните следующие действия:

  1. Добавьте новое действие и введите удостоверение служб коммуникации в поле поиска. В списке действий выберите "Отозвать маркеры доступа пользователей".

    Снимок экрана: действие маркера доступа Службы коммуникации Azure соединителя удостоверений.

  2. Задайте ИД пользователя.

    Снимок экрана: входные данные действия маркера доступа Службы коммуникации Azure соединителя удостоверений.

Система отменяет все маркеры доступа пользователей для указанного пользователя, для этого действия нет выходных данных.

Удаление пользователя

После получения удостоверения служб коммуникации можно использовать действие маркера доступа пользователя для удаления маркера доступа. Выполните следующие действия:

  1. Добавьте новое действие и введите удостоверение служб коммуникации в поле поиска. В списке действий выберите "Удалить пользователя".

    Снимок экрана: действие удаления пользователя Службы коммуникации Azure соединителя удостоверений.

  2. Задайте ИД пользователя.

    Снимок экрана: входные данные действия пользователя Службы коммуникации Azure соединителя удостоверений.

Система удаляет пользователя и отменяет все маркеры доступа для указанного пользователя, для этого действия нет выходных данных.

Тестирование приложения логики

Чтобы запустить рабочий процесс вручную, на панели инструментов конструктора нажмите кнопку "Выполнить". Рабочий процесс создает пользователя, выдает маркер доступа для этого пользователя, а затем удаляет его и удаляет пользователя.

Дополнительные сведения см. в статье о запуске рабочего процесса. Вы можете проверить выходные данные этих действий после успешного выполнения рабочего процесса.

Использование удостоверения для мониторинга и метрик

Идентификатор пользователя выступает в качестве первичного ключа для журналов и метрик, собранных с помощью Azure Monitor. Чтобы просмотреть все вызовы пользователя, например, можно настроить проверку подлинности для сопоставления определенного удостоверения Службы коммуникации Azure (или удостоверений) с одним пользователем.

Дополнительные сведения см. в разделе:

Очистка ресурсов

Чтобы очистить и удалить подписку на Службы коммуникации, удалите ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним. Дополнительные сведения см. в статье "Создание ресурсов >служб коммуникации и управление ими".

Чтобы очистить рабочий процесс приложения логики и связанные ресурсы, см. статью "Создание примера рабочего процесса приложения логики потребления" с помощью портал Azure > очистки ресурсов.

Следующие шаги

В этой статье описано, как создать пользователя и удалить пользователя. В нем также описывается, как выдавать маркер доступа пользователю и удалять маркер доступа пользователей с помощью соединителя удостоверений Службы коммуникации Azure. Дополнительные сведения см. в разделе Службы коммуникации Azure Соединитель удостоверений.

Чтобы узнать, как маркеры используются другими соединителями, ознакомьтесь с тем, как отправить сообщение чата из Power Automate с помощью Службы коммуникации Azure.

Дополнительные сведения о том, как отправить сообщение электронной почты с помощью соединителя Службы коммуникации Azure электронной почты, проверьте отправку сообщения электронной почты в Power Automate с помощью Службы коммуникации Azure.