Share via


Azure Communication Identity-Clientbibliothek für .NET – Version 1.2.0

Azure Communication Identity verwaltet Token für Azure Communication Services.

Quellcode | Produktdokumentation | Proben

Erste Schritte

Installieren des Pakets

Installieren Sie die Azure Communication Identity-Clientbibliothek für .NET mit NuGet:

dotnet add package Azure.Communication.Identity

Voraussetzungen

Sie benötigen ein Azure-Abonnement und eine Communication Service-Ressource , um dieses Paket verwenden zu können.

Um einen neuen Kommunikationsdienst zu erstellen, können Sie das Azure-Portal, die Azure PowerShell oder die .NET-Verwaltungsclientbibliothek verwenden.

Authentifizieren des Clients

Der Identitätsclient kann mithilfe einer Verbindungszeichenfolge authentifiziert werden, die von einer Azure-Kommunikationsressourcen im Azure-Portal abgerufen wurde.

// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationIdentityClient(connectionString);

Alternativ können Sie auch den Endpunkt und den Zugriffsschlüssel verwenden, der von einer Azure-Kommunikationsressourcen im Azure-Portal abgerufen wurde.

var endpoint = new Uri("https://my-resource.communication.azure.com");
var accessKey = "<access_key>";
var client = new CommunicationIdentityClient(endpoint, new AzureKeyCredential(accessKey));

Clients haben auch die Möglichkeit, sich mit einem gültigen Active Directory-Token zu authentifizieren.

var endpoint = new Uri("https://my-resource.communication.azure.com");
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(endpoint, tokenCredential);

Wichtige Begriffe

CommunicationIdentityClient stellt die Funktionen zum Verwalten von Benutzerzugriffstoken bereit: Erstellen neuer Token und Widerrufen dieser Token.

Threadsicherheit

Wir garantieren, dass alle Client-instance Methoden threadsicher und unabhängig voneinander sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch threadsübergreifend.

Zusätzliche Konzepte

Clientoptionen | Zugreifen auf die Antwort | Vorgänge | mit langer AusführungsdauerBehandeln von Fehlern | Diagnose | Spott | Clientlebensdauer

Beispiele

Erstellen eines neuen Benutzers

Response<CommunicationUserIdentifier> userResponse = await client.CreateUserAsync();
CommunicationUserIdentifier user = userResponse.Value;
Console.WriteLine($"User id: {user.Id}");

Abrufen eines Tokens für einen vorhandenen Benutzer

Response<AccessToken> tokenResponse = await client.GetTokenAsync(user, scopes: new[] { CommunicationTokenScope.Chat });
string token = tokenResponse.Value.Token;
DateTimeOffset expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"Token: {token}");
Console.WriteLine($"Expires On: {expiresOn}");

Es ist auch möglich, ein Kommunikationsidentitäts-Zugriffstoken zu erstellen, indem Sie die Ablaufzeit anpassen. Die Gültigkeitsdauer des Tokens muss innerhalb des [1,24] Stunden-Bereichs liegen. Wenn nicht angegeben, wird der Standardwert von 24 Stunden verwendet.

TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
Response<AccessToken> tokenResponse = await client.GetTokenAsync(user, scopes: new[] { CommunicationTokenScope.Chat }, tokenExpiresIn);
string token = tokenResponse.Value.Token;
DateTimeOffset expiresOn = tokenResponse.Value.ExpiresOn;
Console.WriteLine($"Token: {token}");
Console.WriteLine($"Expires On: {expiresOn}");

Erstellen eines Benutzers und eines Tokens in derselben Anforderung

Response<CommunicationUserIdentifierAndToken> response = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.Chat });
var (user, token) = response.Value;
Console.WriteLine($"User id: {user.Id}");
Console.WriteLine($"Token: {token.Token}");

Es ist auch möglich, ein Kommunikationsidentitäts-Zugriffstoken zu erstellen, indem Sie die Ablaufzeit anpassen. Die Gültigkeitsdauer des Tokens muss innerhalb des [1,24] Stunden-Bereichs liegen. Wenn nicht angegeben, wird der Standardwert von 24 Stunden verwendet.

TimeSpan tokenExpiresIn = TimeSpan.FromHours(1);
Response<CommunicationUserIdentifierAndToken> response = await client.CreateUserAndTokenAsync(scopes: new[] { CommunicationTokenScope.Chat }, tokenExpiresIn);
var (user, token) = response.Value;
Console.WriteLine($"User id: {user.Id}");
Console.WriteLine($"Token: {token.Token}");

Aufheben der Token eines Benutzers

Falls die Token eines Benutzers kompromittiert sind oder widerrufen werden müssen:

Response revokeResponse = await client.RevokeTokensAsync(user);

Löschen eines Benutzers

Response deleteResponse = await client.DeleteUserAsync(user);

Austauschen des Azure AD-Zugriffstokens eines Teams-Benutzers gegen ein Kommunikationsidentitäts-Zugriffstoken

Kann CommunicationIdentityClient verwendet werden, um ein Azure AD-Zugriffstoken eines Teams-Benutzers gegen ein neues Kommunikationsidentitäts-Zugriffstoken mit einer übereinstimmenden Ablaufzeit auszutauschen.

Die GetTokenForTeamsUser Funktion akzeptiert die folgenden Parameter, die in den GetTokenForTeamsUserOptions Optionsbehälter eingeschlossen sind:

  • teamsUserAadToken Azure Active Directory-Zugriffstoken eines Teams-Benutzers
  • clientId Client-ID einer Azure AD-Anwendung, die anhand des AppId-Anspruchs im Azure AD-Zugriffstoken überprüft werden soll
  • userObjectId Objekt-ID eines Azure AD-Benutzers (Teams-Benutzer), der anhand des OID-Anspruchs im Azure AD-Zugriffstoken überprüft werden soll
Response<AccessToken> tokenResponse = await client.GetTokenForTeamsUserAsync(new GetTokenForTeamsUserOptions(teamsUserAadToken, clientId, userObjectId));
string token = tokenResponse.Value.Token;
Console.WriteLine($"Token: {token}");

Problembehandlung

Bei allen Vorgängen des Benutzertokendiensts wird bei einem Fehler eine RequestFailedException ausgelöst.

// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationIdentityClient(connectionString);

try
{
    Response<CommunicationUserIdentifier> response = await client.CreateUserAsync();
}
catch (RequestFailedException ex)
{
    Console.WriteLine(ex.Message);
}

Nächste Schritte

Weitere Informationen zu Kommunikationsbenutzerzugriffstoken

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.