Biblioteca de clientes da Identidade de Comunicação do Azure para .NET – versão 1.2.0
A Identidade de Comunicação do Azure está gerenciando tokens para Serviços de Comunicação do Azure.
Código-fonte | Documentação do produto | Amostras
Introdução
Instalar o pacote
Instale a biblioteca de clientes da Identidade de Comunicação do Azure para .NET com o NuGet:
dotnet add package Azure.Communication.Identity
Pré-requisitos
Você precisa de uma assinatura do Azure e de um Recurso do Serviço de Comunicação para usar esse pacote.
Para criar um novo Serviço de Comunicação, você pode usar o Portal do Azure, o Azure PowerShell ou a biblioteca de clientes de gerenciamento do .NET.
Autenticar o cliente
O cliente de identidade pode ser autenticado usando uma cadeia de conexão adquirida de um Recursos de Comunicação do Azure no Portal do Azure.
// Get a connection string to our Azure Communication resource.
var connectionString = "<connection_string>";
var client = new CommunicationIdentityClient(connectionString);
Ou, como alternativa, usar o ponto de extremidade e a chave de acesso adquiridos de recursos de comunicação do Azure no Portal do Azure.
var endpoint = new Uri("https://my-resource.communication.azure.com");
var accessKey = "<access_key>";
var client = new CommunicationIdentityClient(endpoint, new AzureKeyCredential(accessKey));
Os clientes também têm a opção de autenticar usando um token válido do Active Directory.
var endpoint = new Uri("https://my-resource.communication.azure.com");
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CommunicationIdentityClient(endpoint, tokenCredential);
Principais conceitos
CommunicationIdentityClient
fornece as funcionalidades para gerenciar tokens de acesso do usuário: criando novos e revogando-os.
Acesso thread-safe
Garantimos que todos os métodos de instância do cliente sejam thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilize instâncias de cliente seja sempre segura, mesmo entre threads.
Conceitos adicionais
Opções | do cliente Acessando a resposta | Operações de execução prolongada | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
Criando um novo usuário
Response<CommunicationUserIdentifier> userResponse = await client.CreateUserAsync();
CommunicationUserIdentifier user = userResponse.Value;
Console.WriteLine($"User id: {user.Id}");
Obtendo um token para um usuário existente
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}");
Também é possível criar um token de acesso à Identidade de Comunicação personalizando o tempo de expiração. O período de validade do token deve estar dentro do intervalo de [1,24] horas. Se não for fornecido, o valor padrão de 24 horas será usado.
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}");
Criando um usuário e um token na mesma solicitação
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}");
Também é possível criar um token de acesso à Identidade de Comunicação personalizando o tempo de expiração. O período de validade do token deve estar dentro do intervalo de [1,24] horas. Se não for fornecido, o valor padrão de 24 horas será usado.
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}");
Revogando tokens de um usuário
Caso os tokens de um usuário sejam comprometidos ou precisem ser revogados:
Response revokeResponse = await client.RevokeTokensAsync(user);
Excluir um usuário
Response deleteResponse = await client.DeleteUserAsync(user);
Trocando Azure AD token de acesso de um usuário do Teams por um token de acesso da Identidade de Comunicação
O CommunicationIdentityClient
pode ser usado para trocar um token de acesso Azure AD de um usuário do Teams por um novo token de acesso da Identidade de Comunicação com um tempo de expiração correspondente.
A GetTokenForTeamsUser
função aceita os seguintes parâmetros encapsulados no recipiente de opções GetTokenForTeamsUserOptions
:
teamsUserAadToken
Token de acesso do Azure Active Directory de um usuário do TeamsclientId
ID do cliente de um aplicativo Azure AD a ser verificado em relação à declaração appId no token de acesso Azure ADuserObjectId
ID de objeto de um usuário do Azure AD (Usuário do Teams) a ser verificado em relação à declaração OID no token de acesso Azure AD
Response<AccessToken> tokenResponse = await client.GetTokenForTeamsUserAsync(new GetTokenForTeamsUserOptions(teamsUserAadToken, clientId, userObjectId));
string token = tokenResponse.Value.Token;
Console.WriteLine($"Token: {token}");
Solução de problemas
Todas as operações de serviço de token de usuário lançarão uma RequestFailedException em caso de falha.
// 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);
}
Próximas etapas
Leia mais sobre tokens de acesso do usuário de comunicação
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.