Bagikan melalui


Membuat dan mengelola token akses untuk pengguna akhir

Token akses memungkinkan SDK Azure Communication Services untuk mengautentikasi secara langsung dengan Azure Communication Services sebagai identitas tertentu. Anda perlu membuat token akses untuk pengguna akhir jika Anda ingin mereka bergabung dengan utas panggilan atau obrolan dalam aplikasi Anda.

Artikel ini menjelaskan cara menggunakan SDK Azure Communication Services untuk membuat identitas dan mengelola token akses Anda. Untuk kasus penggunaan produksi, kami sarankan Anda menghasilkan token akses pada layanan sisi server seperti yang dijelaskan dalam arsitektur Klien dan server.

Prasyarat

Atur lingkungan Anda

Tambahkan ekstensi

Tambahkan ekstensi Azure Communication Services untuk Azure CLI menggunakan az extension perintah .

az extension add --name communication

Masuk ke Azure CLI

Anda perlu masuk ke Azure CLI. Anda dapat masuk menjalankan az login perintah dari terminal, lalu memberikan kredensial Anda.

(Opsional) Menggunakan operasi identitas Azure CLI tanpa meneruskan string koneksi

Anda dapat mengonfigurasi AZURE_COMMUNICATION_CONNECTION_STRING variabel lingkungan untuk menggunakan operasi identitas Azure CLI tanpa harus menggunakan --connection_string untuk meneruskan string koneksi. Untuk mengonfigurasi variabel lingkungan, buka jendela konsol dan pilih sistem operasi Anda dari tab berikut. Ganti <yourConnectionString> dengan string koneksi aktual Anda.

Buka jendela konsol dan masukkan perintah berikut:

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor Anda, restart Visual Studio sebelum menjalankan contoh.

Menyimpan token akses Anda dalam variabel lingkungan

Untuk mengonfigurasi variabel lingkungan, buka jendela konsol dan pilih sistem operasi Anda dari tab di bawah ini. Ganti <yourAccessToken> dengan token akses Anda yang sebenarnya.

Buka jendela konsol dan masukkan perintah berikut:

setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor Anda, restart Visual Studio sebelum menjalankan contoh.

Operasi

Buat Identitas

Untuk membuat token akses, Anda memerlukan identitas. Azure Communication Services mempertahankan direktori identitas ringan untuk tujuan ini. user create Gunakan perintah untuk membuat entri baru di direktori dengan yang unikId. Identitas diperlukan nanti untuk mengeluarkan token akses.

az communication identity user create --connection-string "<yourConnectionString>"
  • Ganti <yourConnectionString> dengan string koneksi Anda.

Membuat identitas dan mengeluarkan token akses dalam permintaan yang sama

Jalankan perintah berikut untuk membuat identitas Communication Services dan mengeluarkan token akses untuknya secara bersamaan. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung di Mengautentikasi ke Azure Communication Services.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.

Terbitkan token akses

Jalankan perintah berikut untuk mengeluarkan token akses untuk identitas Communication Services Anda. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung di Mengautentikasi ke Azure Communication Services.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.
  • Ganti <userId> dengan userId Anda.

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expires_on respons menunjukkan masa pakai token akses.

Menerbitkan token akses dengan beberapa cakupan

Jalankan perintah berikut untuk mengeluarkan token akses dengan beberapa cakupan untuk identitas Communication Services Anda. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung dalam Model identitas.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.
  • Ganti <userId> dengan userId Anda.

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expires_on respons menunjukkan masa pakai token akses.

Menukar token akses Microsoft Entra pengguna Teams dengan token akses Identitas Komunikasi

token get-for-teams-user Gunakan perintah untuk mengeluarkan token akses untuk pengguna Teams yang dapat digunakan dengan SDK Azure Communication Services.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.
  • Ganti <yourAadUser> dengan userId Microsoft Entra Anda.
  • Ganti <yourAadApplication> dengan ID aplikasi Microsoft Entra Anda.
  • Ganti <yourAadToken> dengan token akses Microsoft Entra Anda.

Mencabut token akses

Anda mungkin perlu mencabut token akses secara eksplisit. Misalnya, Anda akan melakukannya ketika pengguna aplikasi mengubah kata sandi yang mereka gunakan untuk mengautentikasi ke layanan Anda. Perintah token revoke membatalkan semua token akses aktif yang dikeluarkan untuk identitas.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.
  • Ganti <userId> dengan userId Anda.

Menghapus identitas

Saat menghapus identitas, Anda mencabut semua token akses aktif dan mencegah penerbitan token akses lebih lanjut untuk identitas tersebut. Menghapus semua konten tersimpan yang terkait dengan identitas juga dilakukan dengan cara ini.

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

Buat penggantian ini dalam kode:

  • Ganti <yourConnectionString> dengan string koneksi Anda.
  • Ganti <userId> dengan userId Anda.

Prasyarat

Kode akhir

Temukan kode yang diselesaikan di GitHub.

Atur lingkungan Anda

Buat aplikasi C# baru

  1. Di jendela prompt perintah, seperti cmd, PowerShell, atau Bash, jalankan dotnet new perintah untuk membuat aplikasi konsol baru dengan nama AccessTokensQuickstart. Perintah ini membuat proyek Hello World C# sederhana dengan satu file sumber, Program.cs.

    dotnet new console -o AccessTokensQuickstart
    
  2. Ubah direktori Anda ke folder aplikasi yang baru dibuat, dan gunakan dotnet build perintah untuk mengkompilasi aplikasi Anda.

    cd AccessTokensQuickstart
    dotnet build
    

    Output sederhana akan ditampilkan. Jika tampilannya benar, berarti pengaturan Anda berfungsi dan Anda dapat mulai menulis kode untuk Azure Communication Services.

Pasang paketnya

Saat Anda masih berada di direktori aplikasi, instal paket pustaka Identitas Azure Communication Services untuk .NET dengan perintah dotnet add package.

dotnet add package Azure.Communication.Identity

Atur kerangka aplikasi

Di direktori proyek, selesaikan langkah-langkah berikut:

  1. Buka file Program.cs di editor teks.
  2. Tambahkan direktif using untuk menyertakan Azure.Communication.Identity namespace.
  3. Untuk mendukung kode asinkron, perbarui Main deklarasi metode.

Untuk memulai, jalankan kode berikut:

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

Mengautentikasi klien

Inisialisasi CommunicationIdentityClient dengan string koneksi Anda. Kode berikut, yang Anda tambahkan ke Main metode , mengambil string koneksi untuk sumber daya dari variabel lingkungan bernama COMMUNICATION_SERVICES_CONNECTION_STRING.

Untuk informasi selengkapnya, lihat >, Menyimpan string koneksi Anda.

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

Atau, Anda dapat memisahkan titik akhir dan kunci akses dengan menjalankan kode berikut:

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

Jika Anda sudah menyiapkan aplikasi Microsoft Entra, Anda dapat mengautentikasi dengan menggunakan ID Microsoft Entra.

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

Buat Identitas

Untuk membuat token akses, Anda memerlukan identitas. Azure Communication Services mempertahankan direktori identitas ringan untuk tujuan ini. createUser Gunakan metode untuk membuat entri baru di direktori dengan yang unik Id. Gunakan identitas nanti untuk mengeluarkan token akses.

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

Simpan identitas yang diterima dengan pemetaan ke pengguna aplikasi Anda (misalnya, dengan menyimpannya di database server aplikasi Anda).

(Pratinjau) Buat identitas dengan ID kustom yang terkait

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat membuat identitas dengan customId yang terkait untuk memetakan identitas pengguna aplikasi Anda dengan identitas Azure Communication Services. Jika Anda memanggil metode CreateUser lagi dengan customId yang sama, metode tersebut akan mengembalikan user.Id yang sama. Ini menghilangkan kebutuhan untuk menyimpan pemetaan sendiri.

Response<CommunicationUserIdentifier> user = await client.CreateUserAsync(customId: "alice@contoso.com");
Console.WriteLine($"\nCreated an identity with ID: {user.Id}");

(Pratinjau) Dapatkan detail identitas

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat menggunakan GetUserDetail metode untuk mengambil informasi tentang pengguna, termasuk customId dan lastTokenIssuedAt.

Response<CommunicationUserIdentifier> user = await client.CreateUserAsync(customId: "alice@contoso.com");
var userDetails = client.GetUserDetail(user);
Console.WriteLine($"User ID: {userDetails.Id}");
Console.WriteLine($"Custom ID: {userDetails.CustomId}");
Console.WriteLine($"Last token issued at: {userDetails.LastTokenIssuedAt}");

Menerbitkan token akses

Setelah Anda memiliki identitas Communication Services, gunakan metode GetToken untuk menerbitkan token akses untuk itu. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung dalam Model identitas. Anda juga dapat membuat instans communicationUser baru berdasarkan representasi string identitas 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);

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expiresOn menunjukkan masa pakai token akses.

Mengatur waktu kedaluwarsa token kustom

Waktu kedaluwarsa token default adalah 24 jam, tetapi Anda dapat mengonfigurasinya dengan memberikan nilai antara satu jam dan 24 jam ke parameter tokenExpiresInopsional . Saat meminta token baru, tentukan panjang umum sesi komunikasi yang diharapkan untuk waktu kedaluwarsa 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);

Membuat identitas dan mengeluarkan token dalam permintaan yang sama

Anda dapat menggunakan CreateUserAndTokenAsync metode untuk membuat identitas Communication Services dan mengeluarkan token akses untuknya secara bersamaan. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung di Mengautentikasi ke 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);

(Pratinjau) Membuat dan mengidentifikasi serta mengeluarkan token dalam permintaan yang sama dengan ID kustom

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat meneruskan ID kustom Anda ke CreateUserAndTokenAsync metode untuk membuat identitas dan mengeluarkan token akses dalam satu panggilan.

// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
Response<CommunicationUserIdentifierAndToken> identityAndTokenResponse = await client.CreateUserAndTokenAsync(customId: "bob@contoso.com", scopes: new[] { CommunicationTokenScope.VoIP });

// Retrieve the identity, token, and expiration date from the response
var identity = identityAndTokenResponse.User;
var token = identityAndTokenResponse.AccessToken.Token;
var expiresOn = identityAndTokenResponse.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);

Segarkan token akses

Untuk memperbarui token akses, teruskan instans objek CommunicationUserIdentifier ke dalam GetTokenAsync. Jika Anda menyimpan ini Id dan perlu membuat sebuah CommunicationUserIdentifier baru, Anda dapat melakukannya dengan meneruskan Id yang Anda simpan ke konstruktor CommunicationUserIdentifier sebagai berikut:

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

Mencabut token akses

Anda mungkin perlu mencabut token akses secara eksplisit. Misalnya, ketika pengguna aplikasi mengubah kata sandi yang mereka gunakan untuk mengautentikasi ke layanan Anda. Metode RevokeTokensAsync menghapus semua token akses aktif yang telah diterbitkan untuk identitas.

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

Menghapus identitas

Saat menghapus identitas, Anda mencabut semua token akses aktif dan mencegah masalah token akses lebih lanjut untuk identitas tersebut. Menghapus semua konten tersimpan yang terkait dengan identitas juga dilakukan dengan cara ini.

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

Menjalankan kode

Setelah selesai membuat token akses, Anda dapat menjalankan aplikasi dari direktori aplikasi menggunakan dotnet run perintah .

dotnet run

Output dari aplikasinya menjelaskan setiap tindakan yang diselesaikan.

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

Prasyarat

Kode akhir

Temukan kode yang diselesaikan di GitHub.

Atur lingkungan Anda

Membuat aplikasi Node.js baru

  1. Di jendela terminal atau prompt perintah, buat direktori baru untuk aplikasi Anda, lalu buka.

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. Jalankan npm init -y untuk membuat file package.json dengan pengaturan default.

    npm init -y
    

Pasang paketnya

Gunakan perintah npm install untuk menginstal Azure Communication Services Identity SDK untuk JavaScript.

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

Opsi --save mencantumkan perpustakaan sebagai ketergantungan dalam file package.json Anda.

Atur kerangka aplikasi

  1. Buat file bernama issue-access-token.js di direktori proyek dan tambahkan kode berikut:

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

Mengautentikasi klien

Inisialisasi CommunicationIdentityClient dengan string koneksi Anda. Kode berikut, yang Anda tambahkan ke Main metode , mengambil string koneksi untuk sumber daya dari variabel lingkungan bernama COMMUNICATION_SERVICES_CONNECTION_STRING.

Untuk informasi selengkapnya, lihat >, Menyimpan string koneksi Anda.

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

Atau, Anda dapat memisahkan titik akhir dan kunci akses dengan menjalankan kode berikut:

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

Jika Anda sudah menyiapkan aplikasi Microsoft Entra, Anda dapat mengautentikasi dengan menggunakan ID Microsoft Entra.

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

Buat Identitas

Untuk membuat token akses, Anda memerlukan identitas. Azure Communication Services mempertahankan direktori identitas ringan untuk tujuan ini. createUser Gunakan metode untuk membuat entri baru di direktori dengan yang unik Id. Anda memerlukan identitas nanti untuk mengeluarkan token akses.

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

Simpan identitas yang diterima dengan pemetaan ke pengguna aplikasi Anda (misalnya, dengan menyimpannya di database server aplikasi Anda).

(Pratinjau) Membuat identitas dengan ID kustom terkait

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat membuat identitas dengan customId yang terhubung untuk memetakan identitas pengguna aplikasi Anda ke identitas Azure Communication Services. Ketika Anda memanggil createUser dengan customId yang sama, layanan akan mengembalikan communicationUserId yang sama. Ini menghilangkan kebutuhan untuk menyimpan pemetaan sendiri.

const customId = "alice@contoso.com";
let user = await identityClient.createUser({ customId });
console.log(`\nCreated an identity with ID: ${user.communicationUserId}`);

(Pratinjau) Dapatkan detail identitas

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat menggunakan getUserDetail metode untuk mengambil informasi tentang pengguna, termasuk customId dan lastTokenIssuedAt.

const customId = "alice@contoso.com";
let user = await identityClient.createUser({ customId });
let userDetails = client.getUserDetail(user);
console.log(`\nUser ID: ${user.communicationUserId}`);
console.log(`\nCustom ID: ${userDetails.customId}`);
console.log(`\nLast token issued at: ${userDetails.lastTokenIssuedAt}`);

Menerbitkan token akses

Gunakan metode getToken untuk mengeluarkan token akses untuk identitas Communication Services Anda. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung dalam Model identitas. Anda juga dapat membuat instans communicationUser baru berdasarkan representasi string identitas 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);

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expiresOn menunjukkan masa pakai token akses.

Mengatur waktu kedaluwarsa token kustom

Waktu kedaluwarsa token default adalah 24 jam (1440 menit), tetapi Anda dapat mengonfigurasinya dengan memberikan nilai antara 60 menit dan 1440 menit ke parameter tokenExpiresInMinutesopsional . Saat meminta token baru, tentukan panjang umum sesi komunikasi yang diharapkan untuk waktu kedaluwarsa 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);

Membuat identitas dan mengeluarkan token dalam satu panggilan metode

Anda dapat menggunakan createUserAndToken metode untuk membuat identitas Communication Services dan mengeluarkan token akses untuknya secara bersamaan. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Buat itu dengan cakupan 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);

(Pratinjau) Membuat sebuah identitas dan mengeluarkan token dengan satu panggilan metode, termasuk customId.

Penting

Fitur ini tersedia dimulai dengan versi 1.4.0-beta1SDK .

Nota

Fitur ini masih dalam mode pratinjau.

Anda dapat meneruskan ID kustom Anda ke createUserAndToken metode untuk membuat identitas dan mengeluarkan token akses dalam satu panggilan.

// Issue an identity and an access token with a validity of 24 hours and the "voip" scope for the new identity
const customId = "bob@contoso.com";
let identityTokenResponse = await identityClient.createUserAndToken(["voip"], { customId });

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

Segarkan token akses

Saat token kedaluwarsa, Anda perlu menyegarkannya. Untuk merefresh token, panggil getToken lagi dengan identitas yang sama yang digunakan untuk mengeluarkan token. Anda juga perlu menyediakan scopes token yang sudah diperbarui.

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

Mencabut token akses

Anda mungkin perlu mencabut token akses. Misalnya, Anda melakukannya saat pengguna aplikasi mengubah kata sandi yang mereka gunakan untuk mengautentikasi ke layanan Anda. Metode revokeTokens menghapus semua token akses aktif yang telah diterbitkan untuk identitas.

await identityClient.revokeTokens(identityResponse);

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

Menghapus identitas

Saat menghapus identitas, Anda mencabut semua token akses aktif dan mencegah masalah token akses lebih lanjut untuk identitas tersebut. Menghapus semua konten tersimpan yang terkait dengan identitas juga dilakukan dengan cara ini.

await identityClient.deleteUser(identityResponse);

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

Menjalankan kode

Dari prompt konsol, buka direktori yang berisi file issue-access-token.js , lalu jalankan perintah berikut node untuk menjalankan aplikasi:

node ./issue-access-token.js

Output aplikasi menjelaskan setiap tindakan yang diselesaikan:

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

Prasyarat

Kode akhir

Temukan kode yang diselesaikan di GitHub.

Atur lingkungan Anda

Membuat aplikasi Python baru

  1. Di jendela terminal atau prompt perintah, buat direktori baru untuk aplikasi Anda, lalu buka.

    mkdir access-tokens-quickstart && cd access-tokens-quickstart
    
  2. Gunakan editor teks untuk membuat file yang disebut issue-access-tokens.py di direktori akar proyek. Kemudian tambahkan struktur untuk program, termasuk penanganan pengecualian dasar. Anda menambahkan semua kode sumber ke file ini.

    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)
    

Pasang paketnya

Saat berada di direktori aplikasi, instal Azure Communication Services Identity SDK untuk Python menggunakan perintah pip install.

pip install azure-communication-identity

Mengautentikasi klien

Buat instance CommunicationIdentityClient menggunakan string koneksi Anda. Kode berikut, yang Anda tambahkan ke try blok, mengambil string koneksi untuk sumber daya dari variabel lingkungan bernama COMMUNICATION_SERVICES_CONNECTION_STRING.

Untuk informasi selengkapnya, lihat >, Menyimpan string koneksi Anda.

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

Atau, jika Anda sudah menyiapkan aplikasi Microsoft Entra, Anda dapat mengautentikasi dengan menggunakan ID Microsoft Entra.

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

Buat Identitas

Untuk membuat token akses, Anda memerlukan identitas. Azure Communication Services mempertahankan direktori identitas ringan untuk tujuan ini. create_user Gunakan metode untuk membuat entri baru di direktori dengan yang unik Id. Identitas diperlukan nanti untuk mengeluarkan token akses.

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

Simpan identitas yang diterima dengan pemetaan ke pengguna aplikasi Anda (misalnya, dengan menyimpannya di database server aplikasi Anda).

Menerbitkan token akses

Gunakan metode get_token untuk mengeluarkan token akses untuk identitas Communication Services Anda. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung dalam Model identitas. Anda juga dapat membuat instans parameter CommunicationUserIdentifier baru berdasarkan representasi string identitas 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)

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expires_on respons menunjukkan masa pakai token akses.

Mengatur waktu kedaluwarsa token kustom

Waktu kedaluwarsa token default adalah 24 jam, tetapi Anda dapat mengonfigurasinya dengan memberikan nilai antara satu jam dan 24 jam ke parameter token_expires_inopsional . Saat meminta token baru, tentukan panjang umum sesi komunikasi yang diharapkan untuk waktu kedaluwarsa 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)

Membuat identitas dan mengeluarkan token akses dalam permintaan yang sama

Anda dapat menggunakan create_user_and_token metode untuk membuat identitas Communication Services dan mengeluarkan token akses untuknya secara bersamaan. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung di Mengautentikasi ke 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)

Segarkan token akses

Untuk memperbarui token akses, gunakan objek CommunicationUserIdentifier untuk menerbitkan ulang token dengan memberikan identitas yang ada.

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

Mencabut token akses

Anda mungkin perlu mencabut token akses secara eksplisit. Misalnya, ketika pengguna aplikasi mengubah kata sandi yang mereka gunakan untuk mengautentikasi ke layanan Anda. Metode revoke_tokens menghapus semua token akses aktif yang telah diterbitkan untuk identitas.

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

Menghapus identitas

Saat menghapus identitas, Anda mencabut semua token akses aktif dan mencegah penerbitan token akses lebih lanjut untuk identitas tersebut. Menghapus semua konten tersimpan yang terkait dengan identitas juga dilakukan dengan cara ini.

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

Menjalankan kode

Dari prompt konsol, buka direktori yang berisi issue-access-tokens.py file, lalu jalankan perintah berikut python untuk menjalankan aplikasi.

python ./issue-access-tokens.py

Output yang dihasilkan menjelaskan setiap tindakan yang diselesaikan:

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

Prasyarat

Kode akhir

Temukan kode yang diselesaikan di GitHub.

Atur lingkungan Anda

Buat aplikasi Java baru

Di jendela terminal atau prompt perintah, buka direktori tempat Anda ingin membuat aplikasi Java. Untuk menghasilkan proyek Java dari templat maven-archetype-quickstart, jalankan kode berikut:

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

Perhatikan bahwa generate tugas membuat direktori dengan nama yang sama dengan artifactId. Di bawah direktori ini, src/main/java direktori berisi kode sumber proyek, src/test/java direktori berisi sumber pengujian, dan pom.xml file adalah Project Object Model proyek, atau POM. File ini digunakan untuk parameter konfigurasi proyek.

Menginstal paket Layanan Komunikasi

Buka file pom.xml di editor teks Anda. Tambahkan elemen dependensi berikut ke grup dependensi:

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

Kode ini menginstruksikan Maven untuk menginstal Communication Services Identity SDK, yang perlu Anda gunakan nanti.

Atur kerangka aplikasi

Di direktori proyek, selesaikan langkah-langkah berikut:

  1. /src/main/java/com/communication/quickstart Buka direktori.
  2. App.java Buka file di editor Anda.
  3. System.out.println("Hello world!"); Ganti pernyataan.
  4. Tambahkan import direktif.

Gunakan kode berikut untuk memulai:

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

Mengautentikasi klien

Buat sebuah instans dari CommunicationIdentityClient dengan kunci akses dan titik akhir sumber daya Anda. Untuk informasi selengkapnya, lihat >, Menyimpan string koneksi Anda.

Anda juga dapat menginisialisasi klien dengan klien HTTP kustom apa pun yang mengimplementasikan antarmuka com.azure.core.http.HttpClient.

Dalam file App.java, tambahkan kode berikut ke metode 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();

Alih-alih menyediakan titik akhir dan kunci akses, Anda dapat menyediakan seluruh string koneksi dengan menggunakan metode .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();

Jika Anda sudah menyiapkan aplikasi Microsoft Entra, Anda dapat mengautentikasi dengan menggunakan ID Microsoft Entra.

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

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

Buat Identitas

Untuk membuat token akses, Anda memerlukan identitas. Azure Communication Services mempertahankan direktori identitas ringan untuk tujuan ini. createUser Gunakan metode untuk membuat entri baru di direktori dengan yang unik Id.

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

Identitas yang dibuat diperlukan nanti untuk mengeluarkan token akses. Simpan identitas yang diterima dengan pemetaan ke pengguna aplikasi Anda (misalnya, dengan menyimpannya di database server aplikasi Anda).

Menerbitkan token akses

Gunakan metode getToken untuk mengeluarkan token akses untuk identitas Communication Services Anda. Parameter scopes mendefinisikan sekumpulan izin dan peran token akses. Untuk informasi selengkapnya, lihat daftar tindakan yang didukung dalam Model identitas.

Dalam kode berikut, gunakan variabel pengguna yang Anda buat di langkah sebelumnya untuk mendapatkan 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);

Token akses adalah kredensial berumur pendek yang perlu diterbitkan kembali. Tidak melakukannya dapat menyebabkan gangguan pengalaman pengguna aplikasi Anda. Properti expiresAt menunjukkan masa pakai token akses.

Mengatur waktu kedaluwarsa token kustom

Waktu kedaluwarsa token default adalah 24 jam, tetapi Anda dapat mengonfigurasinya dengan memberikan nilai antara satu jam dan 24 jam ke parameter tokenExpiresInopsional . Saat meminta token baru, tentukan panjang umum sesi komunikasi yang diharapkan untuk waktu kedaluwarsa 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);

Membuat identitas dan mengeluarkan token dalam satu permintaan

Atau, Anda dapat menggunakan metode 'createUserAndToken' untuk membuat entri baru di direktori dengan token akses yang unik Id dan mengeluarkan token akses secara bersamaan.

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

Segarkan token akses

Untuk merefresh token akses, gunakan objek CommunicationUserIdentifier untuk menerbitkannya kembali.

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

Mencabut token akses

Anda mungkin perlu mencabut token akses secara eksplisit. Misalnya, Anda akan melakukannya ketika pengguna aplikasi mengubah kata sandi yang mereka gunakan untuk mengautentikasi ke layanan Anda. Metode ini revokeTokens membatalkan semua token akses aktif untuk pengguna tertentu. Dalam kode berikut, Anda dapat menggunakan pengguna yang dibuat sebelumnya.

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

Menghapus identitas

Saat menghapus identitas, Anda mencabut semua token akses aktif dan mencegah penerbitan token akses lebih lanjut untuk identitas tersebut. Menghapus semua konten tersimpan yang terkait dengan identitas juga dilakukan dengan cara ini.

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

Menjalankan kode

  1. Buka direktori yang berisi pom.xml file.

  2. Kompilasi proyek menggunakan perintah berikut mvn :

    mvn compile
    
  3. buat paket:

    mvn package
    
  4. Jalankan perintah berikut mvn untuk menjalankan aplikasi:

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

Output menjelaskan setiap tindakan yang diselesaikan:

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

Prasyarat

  • Sebuah sumber Azure Communication Services.

Membuat token akses

  1. Di portal Microsoft Azure, navigasikan ke bilah Identitas & Token Akses Pengguna di sumber daya Communication Services Anda.

  2. Pilih cakupan token akses. Anda dapat memilih tidak ada, satu, atau beberapa layanan.

  3. Pilih Hasilkan.

    Cuplikan layar yang memperlihatkan cakupan identitas dan token akses tempat Anda memilih Buat.

    Sistem menghasilkan identitas dan token akses pengguna yang sesuai.

  4. Salin string ini dan gunakan di aplikasi sampel dan skenario pengujian lainnya.

    Cuplikan layar yang memperlihatkan identitas dan token akses dengan tanggal kedaluwarsa

Prasyarat

Buat pengguna

Tambahkan langkah baru dalam alur kerja Anda menggunakan konektor Identitas Azure Communication Services. Buka alur Power Automate Anda dalam mode edit, lalu selesaikan langkah-langkah ini di Power Automate.

  1. Buka perancang. Pada langkah di mana Anda ingin menambahkan tindakan baru, pilih Langkah baru. Atau, untuk menambahkan tindakan baru di antara langkah-langkah, arahkan mouse ke atas panah di antara langkah-langkah tersebut, pilih tanda plus (+), dan pilih Tambahkan tindakan.

  2. Di kotak pencarian Pilih operasi, masukkan Identitas Layanan Komunikasi. Dari daftar tindakan, pilih Buat pengguna.

    Cuplikan layar yang memperlihatkan konektor Identitas Azure Communication Services Membuat tindakan pengguna.

  3. Berikan String Koneksi. Anda dapat menemukannya di portal Microsoft Azure, dalam Sumber Daya Azure Communication Service Anda. Pilih opsi Kunci di menu panel kiri untuk melihat Rantai Koneksi.

    Cuplikan layar yang memperlihatkan halaman Kunci dalam Sumber Daya Azure Communication Services.

  4. Berikan Nama Koneksi.

  5. Klik Buat

    Tindakan ini menghasilkan ID Pengguna, yang merupakan identitas pengguna Communication Services. Selain itu, jika Anda mengklik Tampilkan opsi tingkat lanjut dan pilih Cakupan Token, tindakan juga menghasilkan token akses dan waktu kedaluwarsanya dengan cakupan yang ditentukan.

    Cuplikan layar yang memperlihatkan tindakan Buat pengguna konektor Azure Communication Services.

    Cuplikan layar yang memperlihatkan konektor Azure Communication Services Membuat opsi tingkat lanjut tindakan pengguna.

Menerbitkan token akses pengguna

Setelah Anda memiliki identitas Communication Services, Anda dapat mengeluarkan token akses. Selesaikan langkah-langkah berikut:

  1. Tambahkan tindakan baru dan masukkan Identitas Layanan Komunikasi di kotak pencarian. Dari daftar tindakan, pilih Terbitkan token akses pengguna.

    Cuplikan layar yang memperlihatkan tindakan penerbitan token akses oleh konektor Identitas Azure Communication Services.

  2. Sekarang Anda dapat menggunakan output ID Pengguna dari langkah Buat pengguna sebelumnya.

  3. Tentukan cakupan token: VoIP atau obrolan. Pelajari selengkapnya tentang token dan autentikasi.

    Cuplikan layar yang memperlihatkan tindakan Penerbitan token akses dari konektor Identitas Azure Communication Services, yang menentukan ruang lingkup token.

Sistem menghasilkan token akses dan waktu kedaluwarsanya dengan cakupan yang ditentukan.

Mencabut token akses pengguna

Setelah Anda memiliki identitas Communication Services, Anda dapat menggunakan tindakan Terbitkan token akses pengguna untuk mencabut token akses. Selesaikan langkah-langkah berikut:

  1. Tambahkan tindakan baru dan masukkan Identitas Layanan Komunikasi di kotak pencarian. Dari daftar tindakan, pilih Cabut token akses pengguna.

    Cuplikan layar yang menunjukkan tindakan pencabutan token akses pada konektor Identitas Azure Communication Services.

  2. Tentukan ID Pengguna.

    Cuplikan layar yang memperlihatkan konektor Identitas Azure Communication Services Mencabut input tindakan token akses.

Sistem mencabut semua token akses pengguna untuk pengguna yang ditentukan, tidak ada output untuk tindakan ini.

Menghapus pengguna

Setelah Anda memiliki identitas Communication Services, Anda dapat menggunakan tindakan Terbitkan token akses pengguna untuk menghapus token akses. Selesaikan langkah-langkah berikut:

  1. Tambahkan tindakan baru dan masukkan Identitas Layanan Komunikasi di kotak pencarian. Dari daftar tindakan, pilih Hapus pengguna.

    Cuplikan layar yang memperlihatkan tindakan Hapus pengguna pada Identitas Azure Communication Services.

  2. Tentukan ID Pengguna.

    Cuplikan layar yang memperlihatkan konektor Identitas Azure Communication Services Menghapus input tindakan pengguna.

Sistem menghapus pengguna dan mencabut semua token akses pengguna untuk pengguna yang ditentukan, tidak ada output untuk tindakan ini.

Menguji aplikasi logika Anda

Untuk memulai alur kerja Anda secara manual, dari toolbar perancang pilih Jalankan. Alur kerja membuat pengguna, mengeluarkan token akses untuk pengguna tersebut, kemudian menghapus token tersebut dan menghapus pengguna.

Untuk informasi selengkapnya, lihat cara menjalankan alur kerja Anda. Anda dapat memeriksa keluaran dari tindakan-tindakan ini setelah alur kerja berhasil dijalankan.

Menggunakan identitas untuk pemantauan dan metrik

ID pengguna bertindak sebagai kunci utama untuk log dan metrik yang dikumpulkan melalui Azure Monitor. Untuk melihat semua panggilan pengguna, misalnya, Anda dapat menyiapkan autentikasi untuk memetakan identitas Azure Communication Services tertentu (atau beberapa identitas) ke satu pengguna.

Untuk informasi selengkapnya, lihat:

Membersihkan sumber daya

Untuk membersihkan dan menghapus langganan Communication Services, hapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya lain yang terkait dengannya. Untuk informasi selengkapnya, lihat >>.

Untuk membersihkan alur kerja aplikasi logika dan sumber daya terkait, lihat Membuat contoh alur kerja aplikasi logika Konsumsi menggunakan portal > Microsoft Azure Bersihkan sumber daya.

Langkah selanjutnya

Artikel ini menjelaskan cara membuat pengguna dan menghapus pengguna. Ini juga menjelaskan cara mengeluarkan token akses kepada pengguna dan menghapus token akses pengguna menggunakan konektor Identitas Azure Communication Services. Untuk informasi selengkapnya, lihat Azure Communication Services Identity Connector.

Untuk melihat cara token digunakan oleh konektor lain, lihat cara mengirim pesan obrolan dari Power Automate menggunakan Azure Communication Services.

Untuk mempelajari selengkapnya tentang cara mengirim email menggunakan konektor Email Azure Communication Services, centang Kirim pesan email di Power Automate dengan Azure Communication Services.