Guida introduttiva: Configurare e gestire i token di accesso per gli utenti di Teams
In questa guida introduttiva si creerà un'applicazione console .NET per autenticare un utente di Microsoft 365 usando Microsoft Authentication Library (MSAL) e recuperando un token utente di Microsoft Entra. Si scambierà quindi tale token per un token di accesso dell'utente di Teams con il Servizi di comunicazione di Azure Identity SDK. Il token di accesso per l'utente di Teams può quindi essere usato da Communication Services Calling SDK per integrare la funzionalità di chiamata come utente di Teams.
Nota
Quando ci si trova in un ambiente di produzione, è consigliabile implementare questo meccanismo di scambio nei servizi back-end, perché le richieste di uno scambio sono firmate con un segreto.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Risorsa Servizi di comunicazione di Azure attiva e stringa di connessione. Per altre informazioni, vedere Creare una risorsa Servizi di comunicazione di Azure.
- Istanza di Microsoft Entra con utenti che dispongono di una licenza di Teams. Per altre informazioni, vedere Requisiti di licenza di Teams.
Introduzione
Le identità di Teams sono associate ai tenant in Microsoft Entra ID. L'applicazione può essere usata dagli utenti dello stesso tenant o da un altro tenant. In questo argomento di avvio rapido si userà un caso d'uso multi-tenant con più attori: utenti, sviluppatori e amministratori di società fittizie Contoso e Fabrikam. In questo caso d'uso, Contoso è una società che crea software come servizio (SaaS) per Fabrikam.
Le sezioni seguenti illustrano i passaggi per amministratori, sviluppatori e utenti. I diagrammi illustrano il caso d'uso multi-tenant. Se si usa un singolo tenant, eseguire tutti i passaggi da Contoso e Fabrikam in un singolo tenant.
Azioni di amministratore
Il ruolo Amministratore ha autorizzazioni estese in Microsoft Entra ID. I membri di questo ruolo possono configurare le risorse e leggere le informazioni dal portale di Azure. Nel diagramma seguente è possibile visualizzare tutte le azioni che devono essere eseguite dagli amministratori.
- L'amministratore di Contoso crea o seleziona un'applicazione esistente in Microsoft Entra ID. La proprietà Tipi di account supportati definisce se gli utenti di vari tenant possono eseguire l'autenticazione all'applicazione. La proprietà URI di reindirizzamento reindirizza una richiesta di autenticazione riuscita al server Contoso.
- L'amministratore di Contoso aggiunge le autorizzazioni API a
Teams.ManageCalls
eTeams.ManageChats
da Servizi di comunicazione. - L'amministratore di Contoso consente il flusso client pubblico per l'applicazione.
- L'amministratore di Contoso crea o seleziona i servizi di comunicazione esistenti, che verranno usati per l'autenticazione delle richieste di scambio. I token utente di Microsoft Entra verranno scambiati per ottenere un token di accesso dell'utente di Teams. Per altre informazioni, vedere Creare e gestire le risorse di Servizi di comunicazione.
- L'amministratore di Fabrikam concede servizi
Teams.ManageCalls
di comunicazione eTeams.ManageChats
autorizzazioni all'applicazione Contoso. Questo passaggio è obbligatorio se solo l'amministratore di Fabrikam può concedere l'accesso all'applicazione con leTeams.ManageCalls
autorizzazioni eTeams.ManageChats
.
Passaggio 1: Creare una registrazione dell'applicazione Microsoft Entra o selezionare un'applicazione Microsoft Entra
Gli utenti devono essere autenticati nelle applicazioni Microsoft Entra con le autorizzazioni Teams.ManageCalls e Teams.ManageChats del servizio di comunicazione di Azure. Se non si ha un'applicazione esistente che si vuole usare per questa guida introduttiva, è possibile creare una nuova registrazione dell'applicazione.
Le impostazioni dell'applicazione seguenti influenzano l'esperienza:
- La proprietà Tipi di account supportati definisce se l'applicazione è a tenant singolo ("Solo account in questa directory organizzativa") o multi-tenant ("Account in qualsiasi directory organizzativa"). Per questo scenario, è possibile usare multi-tenant.
- L'URI di reindirizzamento definisce l'URI in cui la richiesta di autenticazione viene reindirizzata dopo l'autenticazione. Per questo scenario, è possibile usare client pubblico/nativo (mobile e desktop) e immettere
http://localhost
come URI.
Per informazioni più dettagliate, vedere Registrare un'applicazione con Microsoft Identity Platform.
Quando l'applicazione viene registrata, verrà visualizzato un identificatore nella panoramica. Questo identificatore, ID applicazione (client) viene usato nei passaggi successivi.
Passaggio 2: Consentire flussi client pubblici
Nel riquadro Autenticazione dell'applicazione è possibile visualizzare una piattaforma configurata per client pubblico/nativo (mobile e desktop) con un URI di reindirizzamento che punta a http://localhost. Nella parte inferiore del riquadro verrà visualizzato un interruttore Consenti flussi client pubblici, che per questa guida introduttiva deve essere impostato su Sì.
Passaggio 3: Aggiungere le autorizzazioni di Servizi di comunicazione nell'applicazione
L'applicazione deve dichiarare le autorizzazioni Teams.ManageCalls e Teams.ManageChats per avere accesso alle funzionalità di chiamata di Teams nel tenant. L'utente di Teams richiede un token utente di Microsoft Entra con questa autorizzazione per lo scambio di token.
- Passare all'app Microsoft Entra nel portale di Azure e selezionare Autorizzazioni API
- Selezionare Aggiungi autorizzazioni
- Nel menu Aggiungi autorizzazioni selezionare Servizi di comunicazione di Azure
- Selezionare le autorizzazioni Teams.ManageCalls e Teams.ManageChats, quindi selezionare Aggiungi autorizzazioni
Passaggio 4: Creare o selezionare una risorsa di Servizi di comunicazione
La risorsa di Servizi di comunicazione viene usata per autenticare tutte le richieste di scambio di token utente di Microsoft Entra per un token di accesso dell'utente di Teams. È possibile attivare questo scambio usando Communication Services Identity SDK, che è possibile eseguire l'autenticazione con una chiave di accesso o usando il controllo degli accessi in base al ruolo di Azure. È possibile ottenere la chiave di accesso nella portale di Azure o configurando Il controllo degli accessi in base al ruolo di Azure nel riquadro Controllo di accesso (IAM) tramite la risorsa servizi di comunicazione.
Per creare una nuova risorsa di Servizi di comunicazione, vedere Creare e gestire le risorse di Servizi di comunicazione.
Passaggio 5: Fornire il consenso dell'amministratore
È possibile configurare il tenant di Microsoft Entra per richiedere il consenso dell'amministratore di Microsoft Entra per le autorizzazioni Teams.ManageCalls e Teams.ManageChats dell'applicazione. In tal caso, l'amministratore di Microsoft Entra deve concedere le autorizzazioni all'applicazione Contoso per Servizi di comunicazione Teams.ManageCalls e Teams.ManageChats. L'amministratore di Fabrikam Microsoft Entra fornisce il consenso tramite un URL univoco.
I ruoli seguenti possono fornire il consenso per conto di una società:
- Amministratore globale
- Amministratore dell'applicazione
- Amministratore dell'applicazione cloud
Per controllare i ruoli in portale di Azure, vedere Elencare le assegnazioni di ruolo di Azure.
Per costruire un URL di consenso amministratore, Fabrikam Microsoft Entra Administrator esegue la procedura seguente:
- Nell'URL https://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}l'amministratore sostituisce {Tenant_ID} con l'ID tenant di Fabrikam e sostituisce {Application_ID} con l'ID applicazione Contoso.
- L'amministratore accede e concede le autorizzazioni per conto dell'organizzazione.
L'entità servizio dell'applicazione Contoso nel tenant di Fabrikam viene creata se viene concesso il consenso. L'amministratore di Fabrikam può esaminare il consenso in Microsoft Entra ID seguendo questa procedura:
- Accedi al portale di Azure come amministratore.
- Passare a Microsoft Entra ID.
- Nel riquadro Applicazioni aziendali impostare il filtro Tipo di applicazione su Tutte le applicazioni.
- Nel campo per filtrare le applicazioni immettere il nome dell'applicazione Contoso.
- Selezionare Applica.
- Selezionare l'entità servizio usando il nome richiesto.
- Passare al riquadro Autorizzazioni .
È possibile notare che lo stato delle autorizzazioni Di Servizi di comunicazione Teams.ManageCalls e Teams.ManageChats è concesso per {Directory_name}.
Se si verifica il problema "L'app sta tentando di accedere a un servizio '1fd5118e-2576-4263-8130-9503064c837a'(Servizi di comunicazione di Azure) per cui l'organizzazione '{GUID}' non dispone di un'entità servizio. Contattare l'amministratore IT per esaminare la configurazione delle sottoscrizioni del servizio o fornire il consenso all'applicazione per creare l'entità servizio necessaria". Il tenant di Microsoft Entra non dispone di un'entità servizio per l'applicazione Servizi di comunicazione di Azure. Per risolvere questo problema, usare PowerShell come amministratore di Microsoft Entra per connettersi al tenant. Sostituire Tenant_ID
con un ID della tenancy di Microsoft Entra.
È necessario Application.ReadWrite.All, come illustrato di seguito.
Connect-MgGraph -TenantId "Tenant_ID" -Scopes Application.ReadWrite.All
Se il comando non viene trovato, avviare PowerShell come amministratore e installare il pacchetto Microsoft Graph.
Install-Module Microsoft.Graph
Eseguire quindi il comando seguente per aggiungere un'entità servizio al tenant. Non modificare il GUID dell'ID app.
New-MgServicePrincipal -AppId "1fd5118e-2576-4263-8130-9503064c837a"
Azioni per sviluppatori
Lo sviluppatore Contoso deve configurare l'applicazione client per autenticare gli utenti. Lo sviluppatore deve quindi creare un endpoint nel server back-end per elaborare il token utente di Microsoft Entra dopo il reindirizzamento. Quando viene ricevuto il token utente di Microsoft Entra, viene scambiato per il token di accesso dell'utente di Teams e restituito all'applicazione client.
Le azioni necessarie dello sviluppatore sono illustrate nel diagramma seguente:
- Lo sviluppatore contoso configura Microsoft Authentication Library (MSAL) per autenticare l'utente per l'applicazione creata in precedenza dalle autorizzazioni Administrator for Communication Services Teams.ManageCalls e Teams.ManageChats.
- Lo sviluppatore Contoso inizializza Communication Services Identity SDK e scambia il token utente Microsoft Entra in ingresso per il token di accesso dell'utente di Teams tramite Identity SDK. Il token di accesso dell'utente di Teams viene quindi restituito all'applicazione client.
Usando MSAL, gli sviluppatori possono acquisire i token utente di Microsoft Entra dall'endpoint di Microsoft Identity Platform per autenticare gli utenti e accedere alle API Web sicure. Può essere usato per fornire l'accesso sicuro a Servizi di comunicazione. MSAL supporta molte diverse architetture e piattaforme dell'applicazione, tra cui .NET, JavaScript, Java, Python, Android e iOS.
Per altre informazioni sulla configurazione degli ambienti nella documentazione pubblica, vedere Panoramica di Microsoft Authentication Library.
Nota
Le sezioni seguenti descrivono come scambiare il token di accesso di Microsoft Entra per il token di accesso dell'utente di Teams per l'applicazione console.
Configurare i prerequisiti
- Versione più recente di .NET SDK per il sistema operativo.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Impostazione
Creare una nuova applicazione C#
In una finestra di una console, ad esempio cmd, PowerShell o Bash, usare il comando dotnet new
per creare una nuova app console con il nome CommunicationAccessTokensQuickstart
. Questo comando crea un semplice progetto C# "Hello World" con un singolo file di origine: Program.cs.
dotnet new console -o CommunicationAccessTokensQuickstart
Passare alla cartella dell'app appena creata e usare il comando dotnet build
per compilare l'applicazione.
cd CommunicationAccessTokensQuickstart
dotnet build
Installare il pacchetto
Rimanendo nella directory dell'applicazione, installare il pacchetto della libreria di identità di Servizi di comunicazione di Azure per .NET usando il comando dotnet add package
.
dotnet add package Azure.Communication.Identity
dotnet add package Microsoft.Identity.Client
Configurare il framework dell'app
Dalla directory del progetto:
- Aprire il file Program.cs in un editor di testo
- Aggiungere una direttiva
using
per includere lo spazio dei nomiAzure.Communication.Identity
- Aggiornare la dichiarazione del metodo
Main
per supportare codice asincrono
Per iniziare, usare il codice seguente:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure.Communication.Identity;
using Microsoft.Identity.Client;
namespace CommunicationAccessTokensQuickstart
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Azure Communication Services - Teams Access Tokens Quickstart");
// Quickstart code goes here
}
}
}
Passaggio 1: Ricevere il token utente e l'ID oggetto di Microsoft Entra tramite la libreria MSAL
Il primo passaggio del flusso di scambio di token consiste nel ottenere un token per l'utente di Teams usando Microsoft.Identity.Client. Il codice seguente recupera l'ID client e l'ID tenant di Microsoft Entra dalle variabili di ambiente denominate AAD_CLIENT_ID
e AAD_TENANT_ID
. È essenziale configurare il client MSAL con l'autorità corretta, in base alla AAD_TENANT_ID
variabile di ambiente, per poter recuperare l'attestazione ID oggetto (oid
) corrispondente a un utente nel tenant di Fabrikam e inizializzare la userObjectId
variabile.
// This code demonstrates how to fetch an AAD client ID and tenant ID
// from an environment variable.
string appId = Environment.GetEnvironmentVariable("AAD_CLIENT_ID");
string tenantId = Environment.GetEnvironmentVariable("AAD_TENANT_ID");
string authority = $"https://login.microsoftonline.com/{tenantId}";
string redirectUri = "http://localhost";
// Create an instance of PublicClientApplication
var aadClient = PublicClientApplicationBuilder
.Create(appId)
.WithAuthority(authority)
.WithRedirectUri(redirectUri)
.Build();
List<string> scopes = new() {
"https://auth.msft.communication.azure.com/Teams.ManageCalls",
"https://auth.msft.communication.azure.com/Teams.ManageChats"
};
// Retrieve the AAD token and object ID of a Teams user
var result = await aadClient
.AcquireTokenInteractive(scopes)
.ExecuteAsync();
string teamsUserAadToken = result.AccessToken;
string userObjectId = result.UniqueId;
Passaggio 2: Inizializzare CommunicationIdentityClient
Inizializzare CommunicationIdentityClient
con la stringa di connessione. Il codice seguente recupera la stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
. Informazioni su come gestire la stringa di connessione della risorsa .
Aggiungere al metodo Main
il codice seguente:
// 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);
Passaggio 3: Scambiare il token di accesso Microsoft Entra dell'utente di Teams per un token di accesso di identità di comunicazione
Usare il GetTokenForTeamsUser
metodo per rilasciare un token di accesso per l'utente di Teams che può essere usato con gli SDK Servizi di comunicazione di Azure.
var options = new GetTokenForTeamsUserOptions(teamsUserAadToken, appId, userObjectId);
var accessToken = await client.GetTokenForTeamsUserAsync(options);
Console.WriteLine($"Token: {accessToken.Value.Token}");
Eseguire il codice
Eseguire l'applicazione dalla directory dell'applicazione con il comando dotnet run
.
dotnet run
Configurare i prerequisiti
- Versioni di Active LTS e Maintenance LTS Node.js(versioni consigliate 8.11.1 e 10.14.1).
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Impostazione
Creare una nuova applicazione Node.js
Aprire il terminale o la finestra di comando per creare una nuova directory per l'app e passare a tale directory.
mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
Eseguire npm init -y
per creare un package.json
file con le impostazioni predefinite.
npm init -y
Installare il pacchetto
Usare il npm install
comando per installare Servizi di comunicazione di Azure Identity SDK per JavaScript.
npm install @azure/communication-identity@latest --save
npm install @azure/msal-node --save
npm install express --save
npm install dotenv --save
L'opzione --save
elenca la libreria come dipendenza nel file package.json.
Configurare il framework dell'app
Dalla directory del progetto:
Aprire un nuovo file di testo nell'editor del codice
Aggiungere una chiamata di
require
per caricareCommunicationIdentityClient
Creare la struttura per il programma, inclusa la gestione delle eccezioni di base
const { CommunicationIdentityClient } = require('@azure/communication-identity'); const { PublicClientApplication, CryptoProvider } = require('@azure/msal-node'); const express = require("express"); // You will need to set environment variables in .env const SERVER_PORT = process.env.PORT || 80; const REDIRECT_URI = `http://localhost:${SERVER_PORT}/redirect`; const clientId = process.env['AAD_CLIENT_ID']; const tenantId = process.env['AAD_TENANT_ID']; // Quickstart code goes here app.listen(SERVER_PORT, () => console.log(`Communication access token application started on ${SERVER_PORT}!`))
Salvare il nuovo file come
issue-communication-access-token.js
nellaaccess-tokens-quickstart
directory .
Passaggio 1: Ricevere il token utente e l'ID oggetto di Microsoft Entra tramite la libreria MSAL
Il primo passaggio del flusso di scambio di token consiste nel ottenere un token per l'utente di Teams usando Microsoft.Identity.Client. Il codice seguente recupera l'ID client e l'ID tenant di Microsoft Entra dalle variabili di ambiente denominate AAD_CLIENT_ID
e AAD_TENANT_ID
. È essenziale configurare il client MSAL con l'autorità corretta, in base alla AAD_TENANT_ID
variabile di ambiente, per poter recuperare l'attestazione ID oggetto (oid
) corrispondente a un utente nel tenant di Fabrikam e inizializzare la userObjectId
variabile.
// Create configuration object that will be passed to MSAL instance on creation.
const msalConfig = {
auth: {
clientId: clientId,
authority: `https://login.microsoftonline.com/${tenantId}`,
}
};
// Create an instance of PublicClientApplication
const pca = new PublicClientApplication(msalConfig);
const provider = new CryptoProvider();
const app = express();
let pkceVerifier = "";
const scopes = [
"https://auth.msft.communication.azure.com/Teams.ManageCalls",
"https://auth.msft.communication.azure.com/Teams.ManageChats"
];
app.get('/', async (req, res) => {
// Generate PKCE Codes before starting the authorization flow
const {verifier, challenge} = await provider.generatePkceCodes();
pkceVerifier = verifier;
const authCodeUrlParameters = {
scopes: scopes,
redirectUri: REDIRECT_URI,
codeChallenge: challenge,
codeChallengeMethod: "S256"
};
// Get url to sign user in and consent to scopes needed for application
pca.getAuthCodeUrl(authCodeUrlParameters).then((response) => {
res.redirect(response);
}).catch((error) => console.log(JSON.stringify(error)));
});
app.get('/redirect', async (req, res) => {
// Create request parameters object for acquiring the AAD token and object ID of a Teams user
const tokenRequest = {
code: req.query.code,
scopes: scopes,
redirectUri: REDIRECT_URI,
codeVerifier: pkceVerifier,
};
// Retrieve the AAD token and object ID of a Teams user
pca.acquireTokenByCode(tokenRequest).then(async(response) => {
console.log("Response:", response);
let teamsUserAadToken = response.accessToken;
let userObjectId = response.uniqueId;
//TODO: the following code snippets go here
res.sendStatus(200);
}).catch((error) => {
console.log(error);
res.status(500).send(error);
});
});
Passaggio 2: Inizializzare CommunicationIdentityClient
Creare un'istanza di CommunicationIdentityClient
con la stringa di connessione. Il codice seguente recupera la stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
. Informazioni su come gestire la stringa di connessione della risorsa .
Aggiungere al metodo then
il codice seguente:
// 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);
Passaggio 3: Scambiare il token di accesso Microsoft Entra dell'utente di Teams per un token di accesso di identità di comunicazione
Usare il getTokenForTeamsUser
metodo per rilasciare un token di accesso per l'utente di Teams che può essere usato con gli SDK Servizi di comunicazione di Azure.
//Exchange the Azure AD access token of the Teams User for a Communication Identity access token
let accessToken = await identityClient.getTokenForTeamsUser({
teamsUserAadToken: teamsUserAadToken,
clientId: clientId,
userObjectId: userObjectId,
});
console.log("Token:", accessToken);
Eseguire il codice
Da un prompt della console passare alla directory contenente il file issue-communication-access-token.js , quindi eseguire il comando seguente node
per eseguire l'app.
node ./issue-communication-access-token.js
Configurare i prerequisiti
- Python 3.8+.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Impostazione
Creare una nuova applicazione Python
Aprire il terminale o la finestra di comando per creare una nuova directory per l'app e passare a tale directory.
mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
Usare un editor di testo per creare un file denominato
exchange-communication-access-tokens.py
nella directory radice del progetto e aggiungere la struttura per il programma, inclusa la gestione delle eccezioni di base. Tutto il codice sorgente per questa guida di avvio rapido verrà aggiunto a questo file nelle sezioni riportate di seguito.import os from azure.communication.identity import CommunicationIdentityClient, CommunicationUserIdentifier from msal.application import PublicClientApplication try: print("Azure Communication Services - Access Tokens Quickstart") # Quickstart code goes here except Exception as ex: print(f"Exception: {ex}")
Installare il pacchetto
Nella directory dell'applicazione installare il pacchetto Servizi di comunicazione di Azure Identity SDK per Python usando il pip install
comando .
pip install azure-communication-identity
pip install msal
Passaggio 1: Ricevere il token utente e l'ID oggetto di Microsoft Entra tramite la libreria MSAL
Il primo passaggio del flusso di scambio di token consiste nel ottenere un token per l'utente di Teams usando Microsoft.Identity.Client. In portale di Azure configurare l'URI di reindirizzamento dell'applicazione "Mobile and Desktop" come http://localhost
. Il codice seguente recupera l'ID client e l'ID tenant di Microsoft Entra dalle variabili di ambiente denominate AAD_CLIENT_ID
e AAD_TENANT_ID
. È essenziale configurare il client MSAL con l'autorità corretta, in base alla AAD_TENANT_ID
variabile di ambiente, per poter recuperare l'attestazione ID oggetto (oid
) corrispondente a un utente nel tenant di Fabrikam e inizializzare la user_object_id
variabile.
# This code demonstrates how to fetch your Azure AD client ID and tenant ID
# from an environment variable.
client_id = os.environ["AAD_CLIENT_ID"]
tenant_id = os.environ["AAD_TENANT_ID"]
authority = "https://login.microsoftonline.com/%s" % tenant_id
# Create an instance of PublicClientApplication
app = PublicClientApplication(client_id, authority=authority)
scopes = [
"https://auth.msft.communication.azure.com/Teams.ManageCalls",
"https://auth.msft.communication.azure.com/Teams.ManageChats"
]
# Retrieve the AAD token and object ID of a Teams user
result = app.acquire_token_interactive(scopes)
aad_token = result["access_token"]
user_object_id = result["id_token_claims"]["oid"]
Passaggio 2: Inizializzare CommunicationIdentityClient
Creare un'istanza di CommunicationIdentityClient
con la stringa di connessione. Il codice seguente recupera la stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING
. Informazioni su come gestire la stringa di connessione della risorsa .
Aggiungere questo codice all'interno del blocco 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)
Passaggio 3: Scambiare il token di accesso Microsoft Entra dell'utente di Teams per un token di accesso di identità di comunicazione
Usare il get_token_for_teams_user
metodo per rilasciare un token di accesso per l'utente di Teams che può essere usato con gli SDK Servizi di comunicazione di Azure.
# Exchange the Azure AD access token of the Teams User for a Communication Identity access token
token_result = client.get_token_for_teams_user(aad_token, client_id, user_object_id)
print("Token: " + token_result.token)
Eseguire il codice
Da un prompt della console passare alla directory contenente il file exchange-teams-access-tokens.py , quindi eseguire il comando seguente python
per eseguire l'app.
python ./exchange-communication-access-tokens.py
Configurare i prerequisiti
- Java Development Kit (JDK) versione 8 o successiva.
- Apache Maven.
Codice finale
Trovare il codice finalizzato per questa guida introduttiva in GitHub.
Impostazione
Creare una nuova applicazione Java
Aprire la finestra del terminale o di comando. Passare alla directory in cui creare l'applicazione Java. Eseguire il comando seguente per generare il progetto Java dal maven-archetype-quickstart
modello.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Si noterà che l'attività 'generate' ha creato una directory con lo stesso nome di artifactId
. In questa directory la src/main/java
directory contiene il codice sorgente del progetto, src/test/java directory
contiene l'origine di test e il pom.xml
file è il modello a oggetti del progetto o POM.
Installare il pacchetto
Aprire il file pom.xml
nell'editor di testo. Aggiungere gli elementi di dipendenza seguenti al gruppo di dipendenze.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-identity</artifactId>
<version>[1.2.0,)</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>
Configurare il framework dell'app
Dalla directory del progetto:
- Passare alla directory
/src/main/java/com/communication/quickstart
- Aprire il file
App.java
nell'editor - Sostituire l'istruzione
System.out.println("Hello world!");
- Aggiungere le direttive
import
Per iniziare, usare il codice seguente:
package com.communication.quickstart;
import com.azure.communication.identity.CommunicationIdentityClient;
import com.azure.communication.identity.CommunicationIdentityClientBuilder;
import com.azure.communication.identity.models.GetTokenForTeamsUserOptions;
import com.azure.core.credential.AccessToken;
import com.microsoft.aad.msal4j.IAuthenticationResult;
import com.microsoft.aad.msal4j.InteractiveRequestParameters;
import com.microsoft.aad.msal4j.PublicClientApplication;
import java.net.URI;
import java.util.HashSet;
import java.util.Set;
public class App
{
public static void main( String[] args ) throws Exception
{
System.out.println("Azure Communication Services - Communication access token Quickstart");
// Quickstart code goes here
}
}
Passaggio 1: Ricevere il token utente e l'ID oggetto di Microsoft Entra tramite la libreria MSAL
Il primo passaggio del flusso di scambio di token consiste nel ottenere un token per l'utente di Teams usando Microsoft.Identity.Client. È essenziale configurare il client MSAL con l'autorità corretta, in base alla tenantId
variabile, per poter recuperare l'attestazione OBJECT ID (oid
) corrispondente a un utente nel tenant di Fabrikam e inizializzare la userObjectId
variabile.
// You need to provide your Azure AD client ID and tenant ID
String appId = "<contoso_application_id>";
String tenantId = "<contoso_tenant_id>";
String authority = "https://login.microsoftonline.com/" + tenantId;
// Create an instance of PublicClientApplication
PublicClientApplication pca = PublicClientApplication.builder(appId)
.authority(authority)
.build();
String redirectUri = "http://localhost";
Set<String> scope = new HashSet<String>();
scope.add("https://auth.msft.communication.azure.com/Teams.ManageCalls");
scope.add("https://auth.msft.communication.azure.com/Teams.ManageChats");
// Create an instance of InteractiveRequestParameters for acquiring the AAD token and object ID of a Teams user
InteractiveRequestParameters parameters = InteractiveRequestParameters
.builder(new URI(redirectUri))
.scopes(scope)
.build();
// Retrieve the AAD token and object ID of a Teams user
IAuthenticationResult result = pca.acquireToken(parameters).get();
String teamsUserAadToken = result.accessToken();
String[] accountIds = result.account().homeAccountId().split("\\.");
String userObjectId = accountIds[0];
System.out.println("Teams token: " + teamsUserAadToken);
Passaggio 2: Inizializzare CommunicationIdentityClient
Creare un'istanza di CommunicationIdentityClient
con l'endpoint e la chiave di accesso della risorsa. Informazioni su come gestire la stringa di connessione della risorsa . Inoltre, è possibile inizializzare il client con qualsiasi client HTTP personalizzato che implementa l'interfaccia com.azure.core.http.HttpClient
.
Aggiungere al metodo main
il codice seguente:
//You can find your connection string from your resource in the Azure portal
String connectionString = "<connection_string>";
// Instantiate the identity client
CommunicationIdentityClient communicationIdentityClient = new CommunicationIdentityClientBuilder()
.connectionString(connectionString)
.buildClient();
Passaggio 3: Scambiare il token di accesso Microsoft Entra dell'utente di Teams per un token di accesso di identità di comunicazione
Usare il getTokenForTeamsUser
metodo per rilasciare un token di accesso per l'utente di Teams che può essere usato con gli SDK Servizi di comunicazione di Azure.
// Exchange the Azure AD access token of the Teams User for a Communication Identity access token
GetTokenForTeamsUserOptions options = new GetTokenForTeamsUserOptions(teamsUserAadToken, appId, userObjectId);
var accessToken = communicationIdentityClient.getTokenForTeamsUser(options);
System.out.println("Token: " + accessToken.getToken());
Eseguire il codice
Passare alla directory contenente il pom.xml
file e compilare il progetto usando il mvn compile
comando .
Compilare il pacchetto.
mvn package
Eseguire il comando mvn
seguente per eseguire l'app.
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
Azioni utente
L'utente rappresenta gli utenti di Fabrikam dell'applicazione Contoso. L'esperienza utente è illustrata nel diagramma seguente:
- L'utente di Fabrikam usa l'applicazione client Contoso e viene richiesto di eseguire l'autenticazione.
- L'applicazione client Contoso usa MSAL per autenticare l'utente nel tenant di Fabrikam Microsoft Entra per l'applicazione Contoso con le autorizzazioni Teams.ManageCalls e Teams.ManageChats.
- L'autenticazione viene reindirizzata al server, come definito nella proprietà URI di reindirizzamento in MSAL e nell'applicazione Contoso.
- Il server Contoso scambia il token utente di Microsoft Entra per il token di accesso dell'utente di Teams usando Communication Services Identity SDK e restituisce il token di accesso dell'utente di Teams all'applicazione client.
Con un token di accesso valido per l'utente di Teams nell'applicazione client, gli sviluppatori possono integrare Communication Services Calling SDK e gestire le chiamate come utente di Teams.
Passaggi successivi
In questa guida introduttiva si è appreso come:
- Creare e configurare un'applicazione in Microsoft Entra ID.
- Usare Microsoft Authentication Library (MSAL) per rilasciare un token utente di Microsoft Entra.
- Usare Communication Services Identity SDK per scambiare il token utente di Microsoft Entra per un token di accesso dell'utente di Teams.
Creare un servizio di autenticazione attendibile per gli utentidi Teams Effettuare una chiamata come utenti di Teams a un utente di Teams
Informazioni sui concetti seguenti:
- Casi d'uso per la comunicazione come utente di Teams
- Servizi di comunicazione di Azure supportare le identità di Teams
- Interoperabilità di Teams
- Autenticazione a tenant singolo e multi-tenant per gli utenti di Teams
- Creare e gestire i token di accesso alle comunicazioni per gli utenti di Teams in un'applicazione a pagina singola