Hızlı Başlangıç: Erişim belirteçleri oluşturma ve yönetme
Erişim belirteçleri, ACS SDK'lerinin belirli bir kimlik Azure İletişim Hizmetleri doğrudan kimlik doğrulamasına izin verme. Kullanıcılarının uygulamanıza bir çağrı veya sohbet iş parçacığına katılmasını istediğiniz durumlarda oluşturmanız gerekir.
Kimlikler oluşturmak ve erişim belirteçlerinizi yönetmek için ACS SDK'larını da kullanabilirsiniz. Bu hızlı başlangıçta bunu nasıl yapacağız? Üretim kullanım örnekleri için sunucu tarafı hizmette erişim belirteçleri oluşturmamız önerilir.
Bu öğretici boyunca görüntülerde görülen fiyatlar yalnızca tanıtım amaçlıdır.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- İşletim sisteminiz için en son sürüm .NET Core SDK .
- Etkin bir Iletişim Hizmetleri kaynağı ve bağlantı dizesi. Iletişim Hizmetleri kaynağı oluşturun.
Son kod
Bu hızlı başlangıçta GitHubiçin son kodu bulun.
Ayarlanıyor
Yeni bir C# uygulaması oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi), dotnet new adıyla yeni bir konsol uygulaması oluşturmak için komutunu kullanın AccessTokensQuickstart . Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs .
dotnet new console -o AccessTokensQuickstart
Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin ve dotnet build uygulamanızı derlemek için komutunu kullanın.
cd AccessTokensQuickstart
dotnet build
Basit bir "Merhaba Dünya" çıkışı görmeniz gerekir. Her şey çalışırsa, kurulum uygulamanızın doğru şekilde çalıştığı ve ACS 'ye özgü kodumuzu yazmaya başladığımız anlamına gelir.
Paketi yükler
Hala uygulama dizininde, komutunu kullanarak .NET için Azure Iletişim Hizmetleri kimlik kitaplığı 'nı yükleyebilirsiniz dotnet add package .
dotnet add package Azure.Communication.Identity --version 1.0.0
Uygulama çerçevesini ayarlama
Proje dizininden:
Program.csDosyayı bir metin düzenleyicisinde açusingAd alanını dahil etmek için bir yönerge ekleyinAzure.Communication.IdentityMainZaman uyumsuz kodu desteklemek için yöntem bildirimini güncelleştirme
Başlamak için aşağıdaki kodu kullanın:
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
}
}
}
İstemcinin kimliğini doğrulama
Şimdi CommunicationIdentityClient bağlantı dizeniz ile bir başlatacağız. Aşağıdaki kod, adlı bir ortam değişkeninden kaynak için bağlantı dizesini alır COMMUNICATION_SERVICES_CONNECTION_STRING . Kaynağınızın bağlantı dizesini yönetmehakkında bilgi edinin.
Main yöntemine aşağıdaki kodu ekleyin:
// This code demonstrates how to fetch your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
var client = new CommunicationIdentityClient(connectionString);
Alternatif olarak, uç nokta ve erişim anahtarını ayırabilirsiniz.
// 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));
ayarlanmış bir Azure Active Directory (AD) uygulamanız varsa, bkz. hizmet sorumlularını kullanma, AD ile de kimlik doğrulaması yapabilirsiniz.
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(new Uri(endpoint), tokenCredential);
Kimlik oluşturma
Erişim belirteçleri oluşturmak için bir kimliğe ihtiyacınız vardır. Azure Iletişim Hizmetleri, bu amaçla hafif bir kimlik dizini sağlar. createUserDizinde benzersiz olan yeni bir giriş oluşturmak için yöntemini kullanın Id . Daha sonra erişim belirteçleri vermek için kimlik gereklidir.
var identityResponse = await client.CreateUserAsync();
var identity = identityResponse.Value;
Console.WriteLine($"\nCreated an identity with ID: {identity.Id}");
Alınan kimliği, uygulamanızın kullanıcılarına bir eşleme ile depolamanız gerekir. Örneğin, bunları uygulama sunucunuzun veritabanında depolayarak.
Kimlik erişim belirteçleri verme
Bir kimliğiniz olduğunda, GetToken kimlik için bir erişim belirteci vermek için yöntemini kullanın. scopesParametresi, bu erişim belirtecinin gerçekleştirebileceği izinler/yetenekler kümesini tanımlar. Desteklenen eylemlerin listesinebakın. Bir communicationUser Azure Iletişim hizmeti kimliğinin dize gösterimine göre yeni bir örneği de oluşturulabilir.
// Issue an access token with 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;
// Write the token details to the screen
Console.WriteLine($"\nIssued an access token with 'voip' scope that expires at {expiresOn}:");
Console.WriteLine(token);
Erişim belirteçleri yeniden verilmesini gerektiren kısa ömürlü kimlik bilgileridir. Bunu yapmamak, uygulamanızın kullanıcı deneyiminin kesintiye uğramasına neden olabilir. expiresOnResponse özelliği, erişim belirtecinin ömrünü gösterir.
Aynı istek içinde bir kimlik oluşturma ve erişim belirteci verme
CreateUserAndTokenAsyncYöntemini kullanarak bir Iletişim Hizmetleri kimliği oluşturabilir ve aynı zamanda bir erişim belirteci verebilirsiniz. scopesParametresi, bu erişim belirtecinin gerçekleştirebileceği izinler/yetenekler kümesini tanımlar. Desteklenen eylemlerin listesinebakın.
// Issue an identity and an access token with the "voip" scope for the new identity
var identityAndTokenResponse = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.VoIP });
// Retrieve the identity, token and expiry date from the response
var identity = identityAndTokenResponse.Value.User;
var token = identityAndTokenResponse.Value.AccessToken.Token;
var expiresOn = identityAndTokenResponse.Value.AccessToken.ExpiresOn;
// Print these details to the screen
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);
Erişim belirtecini yenileme
Bir erişim belirtecini yenilemek için nesnesinin bir örneğini geçirin CommunicationUserIdentifier GetTokenAsync . Bunu depoladıysanız Id ve yeni bir oluşturmanız gerekiyorsa CommunicationUserIdentifier , bu durumda, Id aşağıdaki gibi, depolama alanınızı oluşturucuya geçirerek bunu yapabilirsiniz CommunicationUserIdentifier :
var identityToRefresh = new CommunicationUserIdentifier(identity.Id);
var tokenResponse = await client.GetTokenAsync(identityToRefresh, scopes: new [] { CommunicationTokenScope.VoIP });
Erişim belirteçlerini iptal et
Bazı durumlarda, erişim belirteçlerini açıkça iptal etmeniz gerekebilir. Örneğin, bir uygulamanın kullanıcısı hizmetinize kimlik doğrulaması yapmak için kullandıkları parolayı değiştirdiğinde. RevokeTokensAsyncYöntemi, kimliğe verilen tüm etkin erişim belirteçlerini geçersiz kılar.
await client.RevokeTokensAsync(identity);
Console.WriteLine($"\nSuccessfully revoked all access tokens for identity with ID: {identity.Id}");
Kimlik silme
Bir kimlik silindiğinde tüm etkin erişim belirteçleri iptal olur ve kimlikler için erişim belirteçleri yayınınızdan sonra. Ayrıca, kimlik ile ilişkili tüm kalıcı içeriği de kaldırır.
await client.DeleteUserAsync(identity);
Console.WriteLine($"\nDeleted the identity with ID: {identity.Id}");
Kodu çalıştırma
Tamamlandıktan sonra, komutuyla uygulamayı uygulama dizininizden çalıştırabilirsiniz dotnet run .
dotnet run
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- Node.js Etkin LTS ve Bakım LTS sürümleri (8.11.1 ve 10.14.1 önerilir).
- Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
Son Kod
bu hızlı başlangıç için son kodu GitHub.
Ayarlama
Yeni Node.js Oluşturma
Terminal veya komut pencerenizi açın, uygulama için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir access-tokens-quickstart && cd access-tokens-quickstart
Varsayılan npm init -y ayarlarla bir package.json dosya oluşturmak için çalıştırın.
npm init -y
Paketi yükleme
npm installJavaScript için Azure İletişim Hizmetleri Identity SDK'sı yüklemek için komutunu kullanın.
npm install @azure/communication-identity --save
--saveseçeneği, kitaplığı dosyanıza bağımlılık olarak package.json listeler.
Uygulama çerçevesini ayarlama
Başlamak için proje dizininde aşağıdaki kodu kullanın:
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);
})
Tamamlandıktan sonra yeni dosyayı proje issue-access-token.js dizininde olarak kaydedin.
İstemcinin kimliğini doğrulama
Bağlantı dizeniz CommunicationIdentityClient ile bir örneği. Aşağıdaki kod, adlı bir ortam değişkenden kaynağın bağlantı dizesini COMMUNICATION_SERVICES_CONNECTION_STRING alır. Kaynağınız için bağlantı dizesini yönetmeyi öğrenin.
main yöntemine aşağıdaki kodu ekleyin:
// 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);
Alternatif olarak uç noktayı ve erişim anahtarını ayırarak da kullanabilirsiniz.
// 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)
Azure Active Directory (Azure AD) Uygulaması kurulumunuz varsa bkz. Hizmet sorumlularını kullanma,Azure AD ile kimlik doğrulaması da yapma.
const endpoint = process.env["COMMUNICATION_SERVICES_ENDPOINT"];
const tokenCredential = new DefaultAzureCredential();
const identityClient = new CommunicationIdentityClient(endpoint, tokenCredential);
Kimlik oluşturma
Erişim belirteçleri oluşturmak için bir kimliğe ihtiyacınız vardır. Azure İletişim Hizmetleri basit bir kimlik dizini sağlar. dizininde createUser benzersiz bir ile yeni bir giriş oluşturmak için yöntemini Id kullanın. Oluşturulan kimlik daha sonra erişim belirteçleri yapmak için gereklidir.
let identityResponse = await identityClient.createUser();
console.log(`\nCreated an identity with ID: ${identityResponse.communicationUserId}`);
Alınan kimlikleri, uygulama kullanıcılarının eşlemesi ile depolamanız gerekir. Örneğin, uygulama sunucusunun veritabanında.
Erişim belirteçleri sorun
Zaten var getToken olan bir İletişim Hizmetleri kimliği için erişim belirteci almak üzere yöntemini kullanın. parametresi, scopes bu belirteci gerçekleştirecek/kullanabileceği izinlerin/rollerin listesini tanımlar. Desteklenen eylemlerin listesine bakın. Azure İletişim Hizmeti communicationUser kimliğinin dize gösterimine göre yeni bir parametre örneği oluşturulur.
// Issue an access token with the "voip" scope for an identity
let tokenResponse = await identityClient.getToken(identityResponse, ["voip"]);
// retrieve the token and its expiry date from the response
const { token, expiresOn } = tokenResponse;
// Print the expiry date and token to the screen
console.log(`\nIssued an access token with 'voip' scope that expires at ${expiresOn}:`);
console.log(token);
Erişim belirteçleri, yeniden vermeleri gereken kısa süreli kimlik bilgileridir. Bunu yapmaması, uygulama kullanıcı deneyiminin bozulmasına neden olabilir. özelliği, expiresOn erişim belirtecin ömrünü gösterir.
Kimlik oluşturma ve bir yöntem çağrısı içinde erişim belirteci oluşturma
yöntemini kullanarak createUserAndToken bir İletişim Hizmetleri kimliği oluşturabilir ve bu kimlik için bir erişim belirteci oluşturabilirsiniz. scopesparametresi, yukarıdakiyle aynıdır. Bir kez daha kapsamı olan bir tane voip oluşturacağız.
// Issue an identity and an access token with the "voip" scope for the new identity
let identityTokenResponse = await identityClient.createUserAndToken(["voip"]);
// retrieve the token, its expiry date and user from the response
const { token, expiresOn, user } = identityTokenResponse;
// print these details to the screen
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);
Erişim belirteçlerini yenileme
Belirteçlerin süresi dolduğunda bunları düzenli aralıklarla yenilemeniz gerekir. Yenileme kolaydır; yalnızca getToken belirteçleri almak için kullanılan kimlikle yeniden çağrı yapmak kolaydır. Ayrıca yenilenmiş scopes belirteçlerin de belirteci sağlamış oluruz.
// 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"]);
Erişim belirteçlerini iptal etme
Bazı durumlarda erişim belirteçlerini iptal etmek istiyor olabilirsiniz. Örneğin, bir uygulamanın kullanıcısı hizmetinize kimlik doğrulaması yapmak için kullandığı parolayı değiştirse. yöntemi, revokeTokens kimliğe verilen tüm etkin erişim belirteçlerini geçersiz kılacak.
await identityClient.revokeTokens(identityResponse);
console.log(`\nSuccessfully revoked all access tokens for identity with ID: ${identityResponse.communicationUserId}`);
Kimliği silme
Bir kimliğin silinmesi tüm etkin erişim belirteçlerini iptal eder ve kimlik için erişim belirteçleri vermenizi önler. Ayrıca kimlikle ilişkili tüm kalıcı içeriği de kaldırır.
await identityClient.deleteUser(identityResponse);
console.log(`\nDeleted the identity with ID: ${identityResponse.communicationUserId}`);
Kodu çalıştırma
Konsol isteminden, dosyasını içeren dizine issue-access-token.js gidin ve uygulamayı çalıştırmak için aşağıdaki komutu node yürütün.
node ./issue-access-token.js
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Python 2,7 veya 3.6 +.
- Etkin bir Iletişim Hizmetleri kaynağı ve bağlantı dizesi. Iletişim Hizmetleri kaynağı oluşturun.
Son kod
Bu hızlı başlangıçta GitHubiçin son kodu bulun.
Ayarlanıyor
Yeni Python uygulaması oluşturma
Terminal veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir access-tokens-quickstart && cd access-tokens-quickstartProje kök dizininde adlı bir dosya oluşturmak
issue-access-tokens.pyve temel özel durum işleme dahil olmak üzere programın yapısını eklemek için bir metin düzenleyicisi kullanın. Bu hızlı başlangıç için tüm kaynak kodu aşağıdaki bölümlerde bu dosyaya ekleyeceksiniz.import os 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)
Paketi yükler
Hala uygulama dizininde, komutunu kullanarak Python için Azure Communication Services Identity SDK 'sını yükleyebilirsiniz pip install .
pip install azure-communication-identity
İstemcinin kimliğini doğrulama
Daha sonra CommunicationIdentityClient bağlantı dizeniz ile bir olarak örnekliyoruz. Aşağıdaki kod, adlı bir ortam değişkeninden kaynak için bağlantı dizesini alır COMMUNICATION_SERVICES_CONNECTION_STRING . Kaynağınızın bağlantı dizesini yönetmehakkında bilgi edinin.
Bu kodu bloğunun içine ekleyin try :
# This code demonstrates how to fetch 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)
alternatif olarak, ayarlanmış bir Azure Active Directory (Azure AD) uygulamanız varsa, bkz. hizmet sorumlularını kullanma, Azure AD ile kimlik doğrulaması de yapabilirsiniz.
endpoint = os.environ["COMMUNICATION_SERVICES_ENDPOINT"]
client = CommunicationIdentityClient(endpoint, DefaultAzureCredential())
Kimlik oluşturma
Erişim belirteçleri oluşturmak için bir kimliğe ihtiyacınız vardır. Azure Iletişim Hizmetleri, hafif bir kimlik dizini sağlar. create_userDizinde benzersiz olan yeni bir giriş oluşturmak için yöntemini kullanın Id . Daha sonra erişim belirteçleri vermek için kimlik gereklidir.
identity = client.create_user()
print("\nCreated an identity with ID: " + identity.properties['id'])
Alınan kimliği, uygulamanızın kullanıcılarına bir eşleme ile depolamanız gerekir. Örneğin, bunları uygulama sunucunuzun veritabanında depolayarak.
Erişim belirteçleri verme
get_tokenZaten var olan Iletişim Hizmetleri kimliği için bir erişim belirteci vermek üzere metodunu kullanın. scopesParametresi, bu erişim belirtecinin gerçekleştirebileceği izinler/yetenekler kümesini tanımlar. Desteklenen eylemlerin listesinebakın. bir parametresinin yeni bir örneği CommunicationUserIdentifier de Azure Iletişim hizmeti kimliğinin dize gösterimine göre oluşturulabilir.
# Issue an access token with the "voip" scope for an identity
token_result = client.get_token(identity, ["voip"])
expires_on = token_result.expires_on.strftime("%d/%m/%y %I:%M %S %p")
# Print these details to the screen
print("\nIssued an access token with 'voip' scope that expires at " + expires_on + ":")
print(token_result.token)
Erişim belirteçleri yeniden verilmesini gerektiren kısa ömürlü kimlik bilgileridir. Bunu yapmamak, uygulamanızın kullanıcı deneyiminin kesintiye uğramasına neden olabilir. expires_onResponse özelliği, erişim belirtecinin ömrünü gösterir.
Aynı istek içinde bir kimlik oluşturma ve erişim belirteci verme
create_user_and_tokenYöntemini kullanarak bir Iletişim Hizmetleri kimliği oluşturabilir ve bunun için bir erişim belirteci verebilirsiniz. scopesParametresi, bu erişim belirtecinin gerçekleştirebileceği izinler/yetenekler kümesini tanımlar. Desteklenen eylemlerin listesinebakın.
# Issue an identity and an access token with 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.strftime("%d/%m/%y %I:%M %S %p")
# Print these to the screen
print("\nCreated an identity with ID: " + identity.properties['id'])
print("\nIssued an access token with 'voip' scope that expires at " + expires_on + ":")
print(token)
Erişim belirteçlerini yenileme
Bir erişim belirtecini yenilemek için, CommunicationUserIdentifier var olan kimliği geçirerek bir belirteci yeniden vermek üzere nesnesini kullanın:
# The existingIdentity value represents identity of Azure Communication Services stored during identity creation
identity = CommunicationUserIdentifier(existingIdentity)
token_result = client.get_token(identity, ["voip"])
Erişim belirteçlerini iptal et
Bazı durumlarda, erişim belirteçlerini açıkça iptal etmek isteyebilirsiniz. Örneğin, bir uygulamanın kullanıcısı hizmetinize kimlik doğrulaması yapmak için kullandıkları parolayı değiştirdiğinde. revoke_tokensYöntemi, kimliğe verilen tüm etkin erişim belirteçlerini geçersiz kılar.
client.revoke_tokens(identity)
print("\nSuccessfully revoked all access tokens for identity with ID: " + identity.properties['id'])
Kimlik silme
Bir kimlik silindiğinde tüm etkin erişim belirteçleri iptal olur ve kimlik için erişim belirteçleri yayınınızdan sonra. Ayrıca, kimlik ile ilişkili tüm kalıcı içeriği de kaldırır.
client.delete_user(identity)
print("\nDeleted the identity with ID: " + identity.properties['id'])
Kodu çalıştırma
Konsol isteminde dosyayı içeren dizine gidin issue-access-tokens.py ve python uygulamayı çalıştırmak için aşağıdaki komutu yürütün.
python ./issue-access-tokens.py
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Java Development Kit (JDK) sürüm 8 veya üzeri.
- Apache Maven.
- Dağıtılan bir Iletişim Hizmetleri kaynağı ve bağlantı dizesi. Iletişim Hizmetleri kaynağı oluşturun.
Son kod
Bu hızlı başlangıçta GitHubiçin son kodu bulun.
Ayarlanıyor
Yeni bir Java uygulaması oluşturma
Terminal veya komut pencerenizi açın. Java uygulamanızı oluşturmak istediğiniz dizine gidin. Maven-,-hızlı başlangıç şablonundan Java projesi oluşturmak için aşağıdaki komutu çalıştırın.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
' Oluştur ' görevinin ile aynı ada sahip bir dizin oluşturduğunu fark edeceksiniz artifactId . bu dizin altında src/main/java dizini proje kaynak kodunu içerir, src/test/java directory test kaynağını içerir ve pom.xml dosya projenin Project nesne modeli veya pod olur. Bu dosya proje yapılandırma parametreleri için kullanılır.
ACS paketlerini yükler
pom.xml dosyasını metin düzenleyicinizde açın. Aşağıdaki bağımlılık öğesini bağımlılıklar grubuna ekleyin.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-identity</artifactId>
<version>1.0.0</version>
</dependency>
Bu, Maven 'i daha sonra kullanırken ACS Identity SDK 'sını yüklemeye yönlendirir.
Uygulama çerçevesini ayarlama
Proje dizininden:
/src/main/java/com/communication/quickstartdizinine gidinApp.javaDosyayı Düzenleyicinizde açın- İfadesini Değiştir
System.out.println("Hello world!"); importYönergeler ekleme
Başlamak için aşağıdaki kodu kullanın:
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
}
}
İstemcinin kimliğini doğrulama
CommunicationIdentityClientKaynağınızın erişim anahtarı ve uç noktasıyla bir a örneği oluşturun. Kaynağınızın bağlantı dizesini yönetmehakkında bilgi edinin. Ayrıca, istemcisini uygulayan herhangi bir özel HTTP istemcisiyle istemciyi başlatabilirsiniz com.azure.core.http.HttpClient .
Aşağıdaki kodu main içindeki yöntemine ekleyin App.java :
// 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();
Ayrıca, connectionString() uç nokta ve erişim anahtarı sağlamak yerine yöntemi kullanarak tüm bağlantı dizesini de sağlayabilirsiniz.
// Your can find your connection string from your ACS resource in the Azure portal
String connectionString = "<connection_string>";
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.connectionString(connectionString)
.buildClient();
ayarlanmış bir Azure Active Directory (Azure AD) uygulamanız varsa bkz. hizmet sorumlularını kullanma, Azure AD ile de kimlik doğrulaması yapabilirsiniz.
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
TokenCredential credential = new DefaultAzureCredentialBuilder().build();
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
Kimlik oluşturma
Erişim belirteçleri oluşturmak için bir kimliğe ihtiyacınız vardır. Azure Iletişim Hizmetleri, hafif bir kimlik dizini sağlar. createUserDizinde benzersiz olan yeni bir giriş oluşturmak için yöntemini kullanın Id .
CommunicationUserIdentifier user = communicationIdentityClient.createUser();
System.out.println("\nCreated an identity with ID: " + user.getId());
Oluşturulan kimliğin daha sonra erişim belirteçleri vermesi gerekir. Bu nedenle, alınan tüm kimlikleri uygulamanızın kullanıcısına eşleme ile depolamanız gerekir. Örneğin, bunları uygulama sunucunuzun veritabanında depolayarak.
Erişim belirteçleri verme
getTokenZaten var olan Iletişim Hizmetleri kimliği için bir erişim belirteci vermek üzere metodunu kullanın. scopesParametresi, bu belirtecin gerçekleştirebileceği izin ve yetenekler kümesini tanımlar. Geçerli değerler için desteklenen eylemlerin listesine bakın. Bu durumda, bir belirteç almak için önceki adımda oluşturulan kullanıcı değişkenimizi kullanacağız.
// Issue an access token with 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);
Bir istekte kimlik ve sorun belirteci oluşturma
Alternatif olarak, dizinde benzersiz olan yeni bir giriş oluşturmak Id ve erişim belirteci vermek için ' createUserAndToken ' metodunu kullanabilirsiniz.
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);
Erişim belirteçleri yeniden verilmesini gerektiren kısa ömürlü kimlik bilgileridir. Bunu yapmamak, uygulamanızın kullanıcı deneyiminin kesintiye uğramasına neden olabilir. expiresAtÖzelliği, erişim belirtecinin ömrünü gösterir.
Erişim belirteçlerini yenileme
Bir erişim belirtecini yenilemek için, öğesini kullanarak yeniden CommunicationUserIdentifier yayımlayın:
// existingIdentity represents identity of Azure Communication Services stored during identity creation
CommunicationUserIdentifier identity = new CommunicationUserIdentifier(existingIdentity.getId());
AccessToken response = communicationIdentityClient.getToken(identity, scopes);
Erişim belirtecini iptal etme
Bazı durumlarda, erişim belirteçlerini açıkça iptal edebilirsiniz. Örneğin, bir uygulamanın kullanıcısı hizmetinize kimlik doğrulaması yapmak için kullandıkları parolayı değiştirdiğinde. revokeTokensYöntemi belirli bir kullanıcı için tüm etkin erişim belirteçlerini geçersiz kılar. Bu durumda, daha önce oluşturulan kullanıcıyı yeniden kullanacağız.
communicationIdentityClient.revokeTokens(user);
System.out.println("\nSuccessfully revoked all access tokens for user identity with ID: " + user.getId());
Kimlik silme
Bir kimlik silindiğinde tüm etkin erişim belirteçleri iptal olur ve kimlik için erişim belirteçleri yayınınızdan sonra. Ayrıca, kimlik ile ilişkili tüm kalıcı içeriği de kaldırır.
communicationIdentityClient.deleteUser(user);
System.out.println("\nDeleted the user identity with ID: " + user.getId());
Kodu çalıştırma
Dosyayı içeren dizine gidin pom.xml ve aşağıdaki komutu kullanarak projeyi derleyin mvn .
mvn compile
Ardından, paketini oluşturun.
mvn package
mvnUygulamayı yürütmek için aşağıdaki komutu çalıştırın.
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
Uygulamanın çıktısı, tamamlanan her eylemi açıklar:
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 30/03/21 08:09 09 AM:
<token signature here>
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 30/03/21 08:09 09 AM:
<token signature here>
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
Kaynakları temizleme
İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak için kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkilendirilmiş diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi.
Sonraki Adımlar
Bu hızlı başlangıçta şunları öğrendiniz:
- Kimlikleri yönetme
- Erişim belirteçleri sorun
- İletişim Hizmetleri Kimlik SDK'sı kullanma
Şunları da yapmak istiyor olabilir: