Szybki start: konfigurowanie tokenów dostępu dla użytkowników usługi Teams i zarządzanie nimi

W tym przewodniku Szybki start utworzysz aplikację konsolową platformy .NET w celu uwierzytelnienia użytkownika platformy Microsoft 365 przy użyciu biblioteki Microsoft Authentication Library (MSAL) i pobierania tokenu użytkownika usługi Microsoft Entra. Następnie wymienisz ten token dla tokenu dostępu użytkownika usługi Teams przy użyciu zestawu SDK tożsamości usług Azure Communication Services. Token dostępu dla użytkownika usługi Teams może być następnie używany przez zestaw SDK wywołujący usługi Communication Services w celu zintegrowania funkcji wywoływania jako użytkownik usługi Teams.

Uwaga

W środowisku produkcyjnym zalecamy zaimplementowanie tego mechanizmu wymiany w usługach zaplecza, ponieważ żądania wymiany są podpisane przy użyciu wpisu tajnego.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
  • Aktywny zasób usług Azure Communication Services i parametry połączenia. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu usług Azure Communication Services.
  • Wystąpienie firmy Microsoft Entra z użytkownikami, którzy mają licencję usługi Teams. Aby uzyskać więcej informacji, zobacz Wymagania licencyjne usługi Teams.

Wprowadzenie

Tożsamości usługi Teams są powiązane z dzierżawami w identyfikatorze Entra firmy Microsoft. Aplikacja może być używana przez użytkowników z tej samej lub innej dzierżawy. W tym przewodniku Szybki start omówisz wielodostępny przypadek użycia z wieloma aktorami: użytkownikami, deweloperami i administratorami fikcyjnych firm Contoso i Fabrikam. W tym przypadku użycia firma Contoso jest firmą tworzącą oprogramowanie jako usługę (SaaS) dla firmy Fabrikam.

W poniższych sekcjach przedstawiono kroki dla administratorów, deweloperów i użytkowników. Diagramy przedstawiają wielodostępny przypadek użycia. Jeśli pracujesz z jedną dzierżawą, wykonaj wszystkie kroki z firmy Contoso i firmy Fabrikam w jednej dzierżawie.

akcje Administracja istratora

Rola Administracja istrator ma rozszerzone uprawnienia w identyfikatorze Entra firmy Microsoft. Członkowie tej roli mogą konfigurować zasoby i odczytywać informacje z witryny Azure Portal. Na poniższym diagramie można zobaczyć wszystkie akcje, które muszą być wykonywane przez Administracja istratory.

Administracja istrator akcje umożliwiające obsługę usług Azure Communication Services dla tożsamości usługi Teams.

  1. Administracja istrator firmy Contoso tworzy lub wybiera istniejącą aplikację w identyfikatorze Entra firmy Microsoft. Właściwość Obsługiwane typy kont określa, czy użytkownicy z różnych dzierżaw mogą uwierzytelniać się w aplikacji. Właściwość Identyfikator URI przekierowania przekierowuje pomyślne żądanie uwierzytelnienia do serwera Contoso.
  2. Administracja istrator firmy Contoso dodaje uprawnienia interfejsu API do Teams.ManageCalls i Teams.ManageChats z usług komunikacyjnych.
  3. Administracja istrator firmy Contoso umożliwia przepływ klienta publicznego dla aplikacji.
  4. Administracja istrator firmy Contoso tworzy lub wybiera istniejące usługi komunikacyjne, które będą używane do uwierzytelniania żądań wymiany. Tokeny użytkownika usługi Microsoft Entra zostaną wymienione na potrzeby tokenu dostępu użytkownika usługi Teams. Aby uzyskać więcej informacji, zobacz Tworzenie zasobów usług komunikacyjnych i zarządzanie nimi.
  5. Usługa Fabrikam Administracja istrator udziela usług Teams.ManageCalls komunikacyjnych i Teams.ManageChats uprawnień do aplikacji Contoso. Ten krok jest wymagany, jeśli tylko Administracja istrator firmy Fabrikam może udzielić dostępu do aplikacji przy użyciu uprawnień Teams.ManageCalls i Teams.ManageChats .

Krok 1. Tworzenie rejestracji aplikacji Firmy Microsoft Entra lub wybieranie aplikacji Firmy Microsoft Entra

Użytkownicy muszą być uwierzytelniani w aplikacjach firmy Microsoft Entra przy użyciu uprawnień usługi Azure Communication Service Teams.ManageCalls i Teams.ManageChats. Jeśli nie masz istniejącej aplikacji, której chcesz użyć w tym przewodniku Szybki start, możesz utworzyć nową rejestrację aplikacji.

Następujące ustawienia aplikacji mają wpływ na środowisko:

  • Właściwość Obsługiwane typy kont określa, czy aplikacja jest pojedynczą dzierżawą ("Konta tylko w tym katalogu organizacyjnym") czy wielodostępną ("Konta w dowolnym katalogu organizacyjnym"). W tym scenariuszu można użyć wielodostępu.
  • Identyfikator URI przekierowania definiuje identyfikator URI , w którym żądanie uwierzytelniania jest przekierowywane po uwierzytelnieniu. W tym scenariuszu można użyć klienta publicznego/natywnego (dla urządzeń przenośnych i komputerów) i wprowadzić http://localhost jako identyfikator URI.

Aby uzyskać bardziej szczegółowe informacje, zobacz Rejestrowanie aplikacji przy użyciu Platforma tożsamości Microsoft.

Po zarejestrowaniu aplikacji zobaczysz identyfikator w przeglądzie. Ten identyfikator, identyfikator aplikacji (klienta) jest używany w następnych krokach.

Krok 2. Zezwalaj na przepływy klientów publicznych

W okienku Uwierzytelnianie aplikacji można zobaczyć skonfigurowaną platformę dla klienta publicznego/natywnego (dla urządzeń przenośnych i komputerów) z identyfikatorem URI przekierowania wskazującym wartość http://localhost. W dolnej części okienka zobaczysz kontrolkę przełączania Zezwalaj na przepływy klientów publicznych, która dla tego przewodnika Szybki start powinna mieć wartość Tak.

Krok 3. Dodawanie uprawnień usług komunikacyjnych w aplikacji

Aplikacja musi zadeklarować uprawnienia Teams.ManageCalls i Teams.ManageChats, aby mieć dostęp do funkcji wywoływania aplikacji Teams w dzierżawie. Użytkownik usługi Teams zażąda tokenu użytkownika entra firmy Microsoft z tym uprawnieniem do wymiany tokenów.

  1. Przejdź do aplikacji Microsoft Entra w witrynie Azure Portal i wybierz pozycję Uprawnienia interfejsu API
  2. Wybierz pozycję Dodaj uprawnienia
  3. W menu Dodawanie uprawnień wybierz pozycję Azure Communication Services
  4. Wybierz uprawnienia Teams.ManageCalls i Teams.ManageChats, a następnie wybierz pozycję Dodaj uprawnienia

Dodaj uprawnienie Teams.ManageCalls i Teams.ManageChats do aplikacji Microsoft Entra utworzonej w poprzednim kroku.

Krok 4. Tworzenie lub wybieranie zasobu usług komunikacyjnych

Zasób usług komunikacyjnych służy do uwierzytelniania wszystkich żądań wymiany tokenu użytkownika usługi Microsoft Entra dla tokenu dostępu użytkownika usługi Teams. Tę wymianę można wyzwolić przy użyciu zestawu SDK tożsamości usług komunikacyjnych, który można uwierzytelnić przy użyciu klucza dostępu lub przy użyciu kontroli dostępu opartej na rolach (Azure RBAC). Klucz dostępu można uzyskać w witrynie Azure Portal lub przez skonfigurowanie kontroli dostępu na podstawie ról platformy Azure w okienku Kontrola dostępu (IAM) według zasobu usług komunikacyjnych.

Jeśli chcesz utworzyć nowy zasób usług Communication Services, zobacz Tworzenie zasobów usług komunikacyjnych i zarządzanie nimi.

Można skonfigurować dzierżawę firmy Microsoft Entra, aby wymagać zgody administratora firmy Microsoft na uprawnienia Teams.ManageCalls i Teams.ManageChats aplikacji. W takim przypadku firma Microsoft Entra Administracja istrator musi udzielić uprawnień do aplikacji Contoso dla usług komunikacyjnych Teams.ManageCalls i Teams.ManageChats. Firma Microsoft Entra Administracja istrator firmy Microsoft udziela zgody za pośrednictwem unikatowego adresu URL.

Następujące role mogą wyrazić zgodę w imieniu firmy:

  • Administrator globalny
  • Administrator aplikacji
  • Administrator aplikacji w chmurze

Jeśli chcesz sprawdzić role w witrynie Azure Portal, zobacz Wyświetlanie listy przypisań ról platformy Azure.

Aby utworzyć adres URL zgody Administracja istratora, Fabrikam Microsoft Entra Administracja istrator wykonuje następujące czynności:

  1. W adresie URL https://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}Administracja istrator zastępuje element {Tenant_ID} identyfikatorem dzierżawy firmy Fabrikam i zastępuje element {Application_ID} identyfikatorem aplikacji contoso.
  2. Administracja istrator loguje się i przyznaje uprawnienia w imieniu organizacji.

Jednostka usługi aplikacji Contoso w dzierżawie firmy Fabrikam jest tworzona, jeśli udzielono zgody. Firma Fabrikam Administracja istrator może przejrzeć zgodę w identyfikatorze Entra firmy Microsoft, wykonując następujące czynności:

  1. Zaloguj się do portalu Azure Portal jako administrator.
  2. Przejdź do pozycji Tożsamość Microsoft Entra.
  3. W okienku Aplikacje dla przedsiębiorstw ustaw filtr Typ aplikacji na Wszystkie aplikacje.
  4. W polu filtrowania aplikacji wprowadź nazwę aplikacji Contoso.
  5. Wybierz Zastosuj.
  6. Wybierz jednostkę usługi przy użyciu wymaganej nazwy.
  7. Przejdź do okienka Uprawnienia .

Można zobaczyć, że stan uprawnień Teams.ManageCalls i Teams.ManageChats są przyznawane dla {Directory_name}.

Jeśli wystąpi problem "Aplikacja próbuje uzyskać dostęp do usługi "1fd5118e-2576-4263-8130-95030304c837a"(Azure Communication Services), dla której organizacja "{GUID}" nie ma jednostki usługi. Skontaktuj się z Administracja IT, aby przejrzeć konfigurację subskrypcji usługi lub wyrazić zgodę na utworzenie wymaganej jednostki usługi." Dzierżawa firmy Microsoft Entra nie ma jednostki usługi dla aplikacji Azure Communication Services. Aby rozwiązać ten problem, użyj programu PowerShell jako administratora firmy Microsoft Entra, aby nawiązać połączenie z dzierżawą. Zastąp Tenant_ID ciąg identyfikatorem dzierżawy firmy Microsoft Entra.

Wymagane będzie zastosowanie parametru Application.ReadWrite.All , jak pokazano poniżej.

Zrzut ekranu przedstawiający wszystkie operacje odczytu aplikacji.

Connect-MgGraph -TenantId "Tenant_ID" -Scopes Application.ReadWrite.All

Jeśli polecenie nie zostanie znalezione, uruchom program PowerShell jako administrator i zainstaluj pakiet programu Microsoft Graph.

Install-Module Microsoft.Graph

Następnie wykonaj następujące polecenie, aby dodać jednostkę usługi do dzierżawy. Nie należy modyfikować identyfikatora GUID identyfikatora aplikacji.

New-MgServicePrincipal -AppId "1fd5118e-2576-4263-8130-9503064c837a"

Akcje dla deweloperów

Deweloper firmy Contoso musi skonfigurować aplikację kliencą w celu uwierzytelniania użytkowników. Następnie deweloper musi utworzyć punkt końcowy na serwerze zaplecza, aby przetworzyć token użytkownika Firmy Microsoft Entra po przekierowaniu. Po odebraniu tokenu użytkownika Microsoft Entra następuje wymiana tokenu dostępu użytkownika usługi Teams i powrót do aplikacji klienckiej.

Wymagane akcje dewelopera przedstawiono na poniższym diagramie:

Diagram akcji deweloperów umożliwiających obsługę usług Azure Communication Services dla tożsamości usługi Teams.

  1. Deweloper firmy Contoso konfiguruje bibliotekę Microsoft Authentication Library (MSAL) w celu uwierzytelnienia użytkownika dla aplikacji utworzonej wcześniej przez Administracja istrator dla usług komunikacyjnych Teams.ManageCalls i Teams.ManageChats.
  2. Deweloper firmy Contoso inicjuje zestaw SDK tożsamości usług komunikacyjnych i wymienia przychodzący token użytkownika firmy Microsoft Entra dla tokenu dostępu użytkownika usługi Teams za pośrednictwem zestawu SDK tożsamości. Token dostępu użytkownika usługi Teams jest następnie zwracany do aplikacji klienckiej.

Korzystając z biblioteki MSAL, deweloperzy mogą uzyskiwać tokeny użytkowników firmy Microsoft z punktu końcowego Platforma tożsamości Microsoft w celu uwierzytelniania użytkowników i uzyskiwania dostępu do bezpiecznych internetowych interfejsów API. Może służyć do zapewnienia bezpiecznego dostępu do usług komunikacyjnych. Biblioteka MSAL obsługuje wiele różnych architektur i platform aplikacji, w tym .NET, JavaScript, Java, Python, Android i iOS.

Aby uzyskać więcej informacji na temat konfigurowania środowisk w publicznej dokumentacji, zobacz Omówienie biblioteki uwierzytelniania firmy Microsoft.

Uwaga

W poniższych sekcjach opisano sposób wymiany tokenu dostępu firmy Microsoft Entra dla tokenu dostępu użytkownika usługi Teams dla aplikacji konsolowej.

Ustawianie wymagań wstępnych

Kod końcowy

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w witrynie GitHub.

Konfiguruj

Tworzenie nowej aplikacji w języku C#

W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj dotnet new polecenia , aby utworzyć nową aplikację konsolową o nazwie CommunicationAccessTokensQuickstart. To polecenie tworzy prosty projekt języka C# "Hello World" z jednym plikiem źródłowym: Program.cs.

dotnet new console -o CommunicationAccessTokensQuickstart

Zmień katalog na nowo utworzony folder aplikacji i użyj dotnet build polecenia , aby skompilować aplikację.

cd CommunicationAccessTokensQuickstart
dotnet build

Instalowanie pakietu

Nadal w katalogu aplikacji zainstaluj bibliotekę tożsamości usług Azure Communication Services dla platformy .NET przy użyciu dotnet add package polecenia .

dotnet add package Azure.Communication.Identity
dotnet add package Microsoft.Identity.Client

Konfigurowanie struktury aplikacji

Z katalogu projektu:

  1. Otwieranie pliku Program.cs w edytorze tekstów
  2. Dodawanie dyrektywy w using celu uwzględnienia Azure.Communication.Identity przestrzeni nazw
  3. Aktualizowanie deklaracji metody w Main celu obsługi kodu asynchronicznego

Użyj następującego kodu, aby rozpocząć:

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

Krok 1. Odbieranie tokenu użytkownika i identyfikatora obiektu entra firmy Microsoft za pośrednictwem biblioteki MSAL

Pierwszym krokiem przepływu wymiany tokenów jest uzyskanie tokenu dla użytkownika usługi Teams przy użyciu klienta Microsoft.Identity.Client. Poniższy kod pobiera identyfikator klienta i identyfikator dzierżawy firmy Microsoft ze zmiennych środowiskowych o nazwach AAD_CLIENT_ID i AAD_TENANT_ID. Należy skonfigurować klienta biblioteki MSAL przy użyciu odpowiedniego urzędu na AAD_TENANT_ID podstawie zmiennej środowiskowej, aby móc pobrać oświadczenie identyfikatora obiektu (oid) odpowiadające użytkownikowi w dzierżawie firmy Fabrikam i zainicjować userObjectId zmienną.

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

Krok 2. Inicjowanie klasy CommunicationIdentityClient

Zainicjuj element CommunicationIdentityClient za pomocą parametry połączenia. Poniższy kod pobiera parametry połączenia zasobu ze zmiennej środowiskowej o nazwie COMMUNICATION_SERVICES_CONNECTION_STRING. Dowiedz się, jak zarządzać parametry połączenia zasobu.

Dodaj następujący kod do metody Main:

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

Krok 3. Wymiana tokenu dostępu usługi Microsoft Entra użytkownika usługi Teams dla tokenu dostępu tożsamości komunikacji

GetTokenForTeamsUser Użyj metody , aby wydać token dostępu dla użytkownika usługi Teams, który może być używany z zestawami SDK usług Azure Communication Services.

var options = new GetTokenForTeamsUserOptions(teamsUserAadToken, appId, userObjectId);
var accessToken = await client.GetTokenForTeamsUserAsync(options);
Console.WriteLine($"Token: {accessToken.Value.Token}");

Uruchamianie kodu

Uruchom aplikację z katalogu aplikacji za dotnet run pomocą polecenia .

dotnet run

Ustawianie wymagań wstępnych

  • Node.js wersji LTS Active LTS i Maintenance LTS (zalecane wersje 8.11.1 i 10.14.1).

Kod końcowy

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w witrynie GitHub.

Konfiguruj

Tworzenie nowej aplikacji Node.js

Otwórz terminal lub okno polecenia utwórz nowy katalog dla aplikacji i przejdź do niego.

mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart

Uruchom polecenie npm init -y , aby utworzyć package.json plik z ustawieniami domyślnymi.

npm init -y

Instalowanie pakietu

Użyj polecenia , npm install aby zainstalować zestaw SDK tożsamości usług Azure Communication Services dla języka JavaScript.


npm install @azure/communication-identity@latest --save
npm install @azure/msal-node --save
npm install express --save
npm install dotenv --save

Opcja --save wyświetla bibliotekę jako zależność w pliku package.json .

Konfigurowanie struktury aplikacji

Z katalogu projektu:

  1. Otwieranie nowego pliku tekstowego w edytorze kodu

  2. Dodawanie wywołania require w celu załadowania CommunicationIdentityClient

  3. Tworzenie struktury programu, w tym podstawowej obsługi wyjątków

    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}!`))
    
    
  4. Zapisz nowy plik w formacie issue-communication-access-token.jsaccess-tokens-quickstart w katalogu .

Krok 1. Odbieranie tokenu użytkownika i identyfikatora obiektu entra firmy Microsoft za pośrednictwem biblioteki MSAL

Pierwszym krokiem przepływu wymiany tokenów jest uzyskanie tokenu dla użytkownika usługi Teams przy użyciu klienta Microsoft.Identity.Client. Poniższy kod pobiera identyfikator klienta i identyfikator dzierżawy firmy Microsoft ze zmiennych środowiskowych o nazwach AAD_CLIENT_ID i AAD_TENANT_ID. Należy skonfigurować klienta biblioteki MSAL przy użyciu odpowiedniego urzędu na AAD_TENANT_ID podstawie zmiennej środowiskowej, aby móc pobrać oświadczenie identyfikatora obiektu (oid) odpowiadające użytkownikowi w dzierżawie firmy Fabrikam i zainicjować userObjectId zmienną.

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

Krok 2. Inicjowanie klasy CommunicationIdentityClient

Utwórz wystąpienie za CommunicationIdentityClient pomocą parametry połączenia. Poniższy kod pobiera parametry połączenia zasobu ze zmiennej środowiskowej o nazwie COMMUNICATION_SERVICES_CONNECTION_STRING. Dowiedz się, jak zarządzać parametry połączenia zasobu.

Dodaj następujący kod do metody then:

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

Krok 3. Wymiana tokenu dostępu usługi Microsoft Entra użytkownika usługi Teams dla tokenu dostępu tożsamości komunikacji

getTokenForTeamsUser Użyj metody , aby wydać token dostępu dla użytkownika usługi Teams, który może być używany z zestawami SDK usług Azure Communication Services.

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

Uruchamianie kodu

W wierszu polecenia konsoli przejdź do katalogu zawierającego plik issue-communication-access-token.js , a następnie wykonaj następujące node polecenie, aby uruchomić aplikację.

node ./issue-communication-access-token.js

Ustawianie wymagań wstępnych

Kod końcowy

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w witrynie GitHub.

Konfiguruj

Tworzenie nowej aplikacji w języku Python

  1. Otwórz terminal lub okno polecenia utwórz nowy katalog dla aplikacji i przejdź do niego.

    mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
    
  2. Użyj edytora tekstów, aby utworzyć plik o nazwie exchange-communication-access-tokens.py w katalogu głównym projektu i dodać strukturę programu, w tym podstawową obsługę wyjątków. Do tego pliku w poniższych sekcjach dodasz cały kod źródłowy tego przewodnika Szybki start.

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

Instalowanie pakietu

Nadal w katalogu aplikacji zainstaluj zestaw SDK tożsamości usług Azure Communication Services dla języka Python przy użyciu pip install polecenia .

pip install azure-communication-identity
pip install msal

Krok 1. Odbieranie tokenu użytkownika i identyfikatora obiektu entra firmy Microsoft za pośrednictwem biblioteki MSAL

Pierwszym krokiem przepływu wymiany tokenów jest uzyskanie tokenu dla użytkownika usługi Teams przy użyciu klienta Microsoft.Identity.Client. W witrynie Azure Portal skonfiguruj identyfikator URI przekierowania aplikacji mobilnej i klasycznej jako http://localhost. Poniższy kod pobiera identyfikator klienta i identyfikator dzierżawy firmy Microsoft ze zmiennych środowiskowych o nazwach AAD_CLIENT_ID i AAD_TENANT_ID. Należy skonfigurować klienta biblioteki MSAL przy użyciu odpowiedniego urzędu na AAD_TENANT_ID podstawie zmiennej środowiskowej, aby móc pobrać oświadczenie identyfikatora obiektu (oid) odpowiadające użytkownikowi w dzierżawie firmy Fabrikam i zainicjować user_object_id zmienną.

# 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"] 

Krok 2. Inicjowanie klasy CommunicationIdentityClient

Utwórz wystąpienie za CommunicationIdentityClient pomocą parametry połączenia. Poniższy kod pobiera parametry połączenia zasobu ze zmiennej środowiskowej o nazwie COMMUNICATION_SERVICES_CONNECTION_STRING. Dowiedz się, jak zarządzać parametry połączenia zasobu.

Dodaj ten kod wewnątrz try bloku:

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

Krok 3. Wymiana tokenu dostępu usługi Microsoft Entra użytkownika usługi Teams dla tokenu dostępu tożsamości komunikacji

get_token_for_teams_user Użyj metody , aby wydać token dostępu dla użytkownika usługi Teams, który może być używany z zestawami SDK usług Azure Communication Services.

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

Uruchamianie kodu

W wierszu polecenia konsoli przejdź do katalogu zawierającego plik exchange-teams-access-tokens.py , a następnie wykonaj następujące python polecenie, aby uruchomić aplikację.

python ./exchange-communication-access-tokens.py

Ustawianie wymagań wstępnych

Kod końcowy

Znajdź sfinalizowany kod dla tego przewodnika Szybki start w witrynie GitHub.

Konfiguruj

Tworzenie nowej aplikacji Java

Otwórz terminal lub okno polecenia. Przejdź do katalogu, w którym chcesz utworzyć aplikację Java. Uruchom poniższe polecenie, aby wygenerować projekt Java na podstawie szablonu maven-archetype-quickstart .

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

Zauważysz, że zadanie "generate" utworzyło katalog o takiej samej nazwie jak artifactId. W tym katalogu src/main/java katalog zawiera kod źródłowy projektu, src/test/java directory zawiera źródło testowe, a pom.xml plik jest projektem Project Object Model lub POM.

Instalowanie pakietu

pom.xml Otwórz plik w edytorze tekstów. Dodaj następujące elementy zależności do grupy zależności.

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

Konfigurowanie struktury aplikacji

Z katalogu projektu:

  1. Przejdź do katalogu /src/main/java/com/communication/quickstart
  2. App.java Otwórz plik w edytorze
  3. Zastąp instrukcję System.out.println("Hello world!");
  4. Dodawanie import dyrektyw

Użyj następującego kodu, aby rozpocząć:

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

Krok 1. Odbieranie tokenu użytkownika i identyfikatora obiektu entra firmy Microsoft za pośrednictwem biblioteki MSAL

Pierwszym krokiem przepływu wymiany tokenów jest uzyskanie tokenu dla użytkownika usługi Teams przy użyciu klienta Microsoft.Identity.Client. Należy skonfigurować klienta biblioteki MSAL przy użyciu odpowiedniego urzędu na tenantId podstawie zmiennej, aby móc pobrać oświadczenie identyfikatora obiektu (oid) odpowiadające użytkownikowi w dzierżawie firmy Fabrikam i zainicjować userObjectId zmienną.

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

Krok 2. Inicjowanie klasy CommunicationIdentityClient

CommunicationIdentityClient Utwórz wystąpienie elementu przy użyciu klucza dostępu zasobu i punktu końcowego. Dowiedz się, jak zarządzać parametry połączenia zasobu. Ponadto można zainicjować klienta przy użyciu dowolnego niestandardowego klienta HTTP implementuje com.azure.core.http.HttpClient interfejs.

Dodaj następujący kod do metody main:

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

Krok 3. Wymiana tokenu dostępu usługi Microsoft Entra użytkownika usługi Teams dla tokenu dostępu tożsamości komunikacji

getTokenForTeamsUser Użyj metody , aby wydać token dostępu dla użytkownika usługi Teams, który może być używany z zestawami SDK usług Azure Communication Services.

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

Uruchamianie kodu

Przejdź do katalogu zawierającego pom.xml plik i skompiluj projekt przy użyciu mvn compile polecenia .

Następnie skompiluj pakiet.

mvn package

Uruchom następujące mvn polecenie, aby wykonać aplikację.

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

Akcje użytkownika

Użytkownik reprezentuje użytkowników firmy Fabrikam aplikacji Contoso. Środowisko użytkownika zostało pokazane na poniższym diagramie:

Diagram akcji użytkownika w celu włączenia obsługi usług Azure Communication Services dla tożsamości usługi Teams.

  1. Użytkownik firmy Fabrikam używa aplikacji klienckiej firmy Contoso i jest monitowany o uwierzytelnienie.
  2. Aplikacja kliencka firmy Contoso używa biblioteki MSAL do uwierzytelniania użytkownika względem dzierżawy Fabrikam Microsoft Entra dla aplikacji Contoso przy użyciu uprawnień Communication Services Teams.ManageCalls i Teams.ManageChats.
  3. Uwierzytelnianie jest przekierowywane do serwera zgodnie z definicją we właściwości Identyfikator URI przekierowania w bibliotekach MSAL i aplikacji Contoso.
  4. Serwer Contoso wymienia token użytkownika usługi Microsoft Entra dla tokenu dostępu użytkownika usługi Teams przy użyciu zestawu SDK tożsamości usług komunikacyjnych i zwraca token dostępu użytkownika usługi Teams do aplikacji klienckiej.

Z prawidłowym tokenem dostępu dla użytkownika usługi Teams w aplikacji klienckiej deweloperzy mogą zintegrować zestaw SDK wywołujący usługi Communication Services i zarządzać wywołaniami jako użytkownik usługi Teams.

Następne kroki

W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:

  • Tworzenie i konfigurowanie aplikacji w identyfikatorze Entra firmy Microsoft.
  • Użyj biblioteki Microsoft Authentication Library (MSAL), aby wydać token użytkownika firmy Microsoft Entra.
  • Użyj zestawu SDK tożsamości usług komunikacyjnych, aby wymienić token użytkownika usługi Microsoft Entra na token dostępu użytkownika usługi Teams.

Dowiedz się więcej o następujących pojęciach: