Sdílet prostřednictvím


Rychlý start: Nastavení a správa přístupových tokenů pro uživatele Teams

V tomto rychlém startu vytvoříte konzolovou aplikaci .NET, která ověří uživatele Microsoftu 365 pomocí knihovny Microsoft Authentication Library (MSAL) a načte token uživatele Microsoft Entra. Tento token pak vyměníte pro přístupový token uživatele Teams pomocí sady SDK pro identitu služby Azure Communication Services. Přístupový token pro uživatele Teams pak může používat sada SDK pro volání komunikačních služeb k integraci funkce volání jako uživatel Teams.

Poznámka:

Pokud jste v produkčním prostředí, doporučujeme implementovat tento mechanismus výměny v back-endových službách, protože požadavky na výměnu jsou podepsané tajným kódem.

Požadavky

  • Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
  • Aktivní prostředek služby Azure Communication Services a připojovací řetězec. Další informace najdete v tématu Vytvoření prostředku Azure Communication Services.
  • Instance Microsoft Entra s uživateli, kteří mají licenci Teams. Další informace najdete v tématu Licenční požadavky teams.

Úvod

Identity Teams jsou vázané na tenanty v Microsoft Entra ID. Vaši aplikaci můžou používat uživatelé ze stejného nebo jiného tenanta. V tomto rychlém startu si projdete případ použití s více tenanty s několika aktéry: uživateli, vývojáři a správci z fiktivních společností Contoso a Fabrikam. V tomto případě je Contoso společností, která vytváří software jako službu (SaaS) pro Fabrikam.

Následující části vás provedou postupem pro správce, vývojáře a uživatele. Diagramy znázorňují případ použití s více tenanty. Pokud pracujete s jedním tenantem, proveďte všechny kroky ze společnosti Contoso a Fabrikam v jednom tenantovi.

akce Správa istratoru

Role Správa istrator má rozšířená oprávnění v MICROSOFT Entra ID. Členové této role mohou nastavit prostředky a číst informace z webu Azure Portal. V následujícím diagramu můžete zobrazit všechny akce, které musí provádět Správa istrátory.

Správa istrator akce umožňující podporu Azure Communication Services pro identity Teams.

  1. Společnost Contoso Správa istrator vytvoří nebo vybere existující aplikaci v MICROSOFT Entra ID. Podporované typy účtů definují, jestli se uživatelé z různých tenantů můžou ověřit v aplikaci. Vlastnost Redirect URI přesměruje úspěšnou žádost o ověření na server Contoso.
  2. Společnost Contoso Správa istrator přidává oprávnění rozhraní API ke Teams.ManageCalls komunikačním službám a Teams.ManageChats z této služby.
  3. Společnost Contoso Správa istrator umožňuje tok veřejného klienta pro aplikaci.
  4. Společnost Contoso Správa istrator vytvoří nebo vybere stávající komunikační služby, které se použijí k ověřování žádostí o výměnu. Tokeny uživatele Microsoft Entra se vymění za přístupový token uživatele Teams. Další informace najdete v tématu Vytváření a správa prostředků komunikačních služeb.
  5. Společnost Fabrikam Správa istrator uděluje komunikačním službám Teams.ManageCalls a Teams.ManageChats oprávněním k aplikaci Contoso. Tento krok se vyžaduje, pokud pouze Fabrikam Správa istrator může udělit přístup k aplikaci s oprávněními Teams.ManageCalls a Teams.ManageChats oprávněními.

Krok 1: Vytvoření registrace aplikace Microsoft Entra nebo výběr aplikace Microsoft Entra

Uživatelé musí být ověřeni v aplikacích Microsoft Entra pomocí oprávnění Teams.ManageCalls a Teams.ManageChats. Pokud nemáte existující aplikaci, kterou chcete použít pro účely tohoto rychlého startu, můžete vytvořit novou registraci aplikace.

Prostředí ovlivňují následující nastavení aplikace:

  • Vlastnost Podporované typy účtů definuje, jestli je aplikace jedním tenantem ("Účty pouze v tomto organizačním adresáři") nebo víceklient ("Účty v libovolném adresáři organizace"). V tomto scénáři můžete použít víceklienta.
  • Identifikátor URI přesměrování definuje identifikátor URI, ve kterém se požadavek na ověření přesměruje po ověření. V tomto scénáři můžete použít veřejného klienta nebo nativní (mobilní &desktop) a zadat http://localhost jako identifikátor URI.

Podrobnější informace najdete v tématu Registrace aplikace na platformě Microsoft Identity Platform.

Po registraci aplikace se v přehledu zobrazí identifikátor. Tento identifikátor, ID aplikace (klienta) se používá v dalších krocích.

Krok 2: Povolení toků veřejných klientů

V podokně Ověřování vaší aplikace můžete zobrazit nakonfigurovanou platformu pro veřejný klient nebo nativní (mobilní &desktop) s identifikátorem URI přesměrování odkazující na http://localhost. V dolní části podokna se zobrazí přepínač Povolit toky veřejného klienta, který pro účely tohoto rychlého startu by měl být nastavený na Ano.

Krok 3: Přidání oprávnění komunikačních služeb v aplikaci

Aplikace musí deklarovat oprávnění Teams.ManageCalls a Teams.ManageChats, aby měla přístup k funkcím volání Teams v tenantovi. Uživatel Teams požaduje token uživatele Microsoft Entra s tímto oprávněním pro výměnu tokenů.

  1. Na webu Azure Portal přejděte do aplikace Microsoft Entra a vyberte oprávnění rozhraní API.
  2. Výběr možnosti Přidat oprávnění
  3. V nabídce Přidat oprávnění vyberte Azure Communication Services.
  4. Vyberte oprávnění Teams.ManageCalls a Teams.ManageChats a pak vyberte Přidat oprávnění.

Přidejte oprávnění Teams.ManageCalls a Teams.ManageChats k aplikaci Microsoft Entra vytvořenou v předchozím kroku.

Krok 4: Vytvoření nebo výběr prostředku Komunikační služby

Prostředek Komunikační služby slouží k ověření všech požadavků na výměnu tokenu uživatele Microsoft Entra pro přístupový token uživatele Teams. Tuto výměnu můžete aktivovat pomocí sady SDK identity komunikačních služeb, kterou můžete ověřit pomocí přístupového klíče nebo pomocí řízení přístupu na základě role v Azure (Azure RBAC). Přístupový klíč můžete získat buď na webu Azure Portal, nebo konfigurací Azure RBAC v podokně Řízení přístupu (IAM) prostředkem služby Communication Services.

Pokud chcete vytvořit nový prostředek služby Communication Services, přečtěte si téma Vytvoření a správa prostředků služby Communication Services.

Tenanta Microsoft Entra lze nakonfigurovat tak, aby vyžadoval souhlas správce Microsoft Entra pro oprávnění Teams.ManageCalls a Teams.ManageChats aplikace. V takovém případě musí Microsoft Entra Správa istrator udělit oprávnění aplikaci Contoso pro Komunikační služby Teams.ManageCalls a Teams.ManageChats. Společnost Fabrikam Microsoft Entra Správa istrator poskytuje souhlas prostřednictvím jedinečné adresy URL.

Jménem společnosti můžou poskytnout souhlas následující role:

  • Globální správce
  • Správce aplikací
  • Správce cloudových aplikací

Pokud chcete zkontrolovat role na webu Azure Portal, podívejte se na seznam přiřazení rolí Azure.

Chcete-li vytvořit adresu URL souhlasu Správa istrator, provede společnost Fabrikam Microsoft Entra Správa istrator následující kroky:

  1. V adrese URL https://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}Správa istrator nahradí {Tenant_ID} ID tenanta Fabrikam a nahradí {Application_ID} ID aplikace Contoso.
  2. Správa istrator se přihlásí a udělí oprávnění jménem organizace.

Instanční objekt aplikace Contoso v tenantovi Fabrikam se vytvoří, pokud je udělen souhlas. Společnost Fabrikam Správa istrator může zkontrolovat souhlas v MICROSOFT Entra ID pomocí následujícího postupu:

  1. Přihlaste se k Azure Portal jako správce.
  2. Přejděte na Microsoft Entra ID.
  3. V podokně Podnikové aplikace nastavte filtr Typ aplikace na Všechny aplikace.
  4. Do pole pro filtrování aplikací zadejte název aplikace Contoso.
  5. Vyberte Použít.
  6. Pomocí požadovaného názvu vyberte instanční objekt.
  7. Přejděte do podokna Oprávnění .

Můžete vidět, že stav oprávnění Teams.ManageCalls a Teams.ManageChats jsou udělena pro {Directory_name}.

Pokud narazíte na problém "Aplikace se pokouší získat přístup ke službě 1fd5118e-2576-4263-8130-9503064c837a(Azure Communication Services), pro kterou vaše organizace {GUID} nemá instanční objekt. Obraťte se na it Správa a zkontrolujte konfiguraci vašich předplatných služeb nebo odsouhlaste aplikaci a vytvořte požadovaný instanční objekt." Váš tenant Microsoft Entra nemá instanční objekt pro aplikaci Azure Communication Services. Pokud chcete tento problém vyřešit, připojte se k tenantovi pomocí PowerShellu jako správce Microsoft Entra. Nahraďte Tenant_ID ID tenanta Microsoft Entra.

Budete vyžadovat Application.ReadWrite.All , jak je znázorněno níže.

Snímek obrazovky zobrazující aplikaci číst vše pro čtení

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

Pokud se příkaz nenajde, spusťte PowerShell jako správce a nainstalujte balíček Microsoft Graphu.

Install-Module Microsoft.Graph

Potom spuštěním následujícího příkazu přidejte instanční objekt do tenanta. Neupravujte identifikátor GUID ID aplikace.

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

Akce pro vývojáře

Vývojář společnosti Contoso musí nastavit klientskou aplikaci pro ověřování uživatelů. Vývojář pak musí na back-endovém serveru vytvořit koncový bod pro zpracování tokenu uživatele Microsoft Entra po přesměrování. Po přijetí tokenu uživatele Microsoft Entra se vymění za přístupový token uživatele Teams a vrátí se do klientské aplikace.

Požadované akce vývojáře jsou znázorněny v následujícím diagramu:

Diagram akcí pro vývojáře, které umožňují podporu Azure Communication Services pro identity Teams

  1. Vývojář společnosti Contoso nakonfiguruje knihovnu Microsoft Authentication Library (MSAL) tak, aby ověřil uživatele pro aplikaci vytvořenou dříve Správa istratorem pro komunikační služby Teams.ManageCalls a Teams.ManageChats.
  2. Vývojář společnosti Contoso inicializuje sadu SDK identity komunikačních služeb a vymění příchozí uživatelský token Microsoft Entra pro přístupový token uživatele Teams prostřednictvím sady SDK identity. Přístupový token uživatele Teams se pak vrátí do klientské aplikace.

Pomocí knihovny MSAL můžou vývojáři získat tokeny uživatele Microsoft Entra z koncového bodu Microsoft Identity Platform za účelem ověřování uživatelů a přístupu k zabezpečeným webovým rozhraním API. Dá se použít k zajištění zabezpečeného přístupu ke komunikačním službám. MSAL podporuje mnoho různých aplikačních architektur a platforem, včetně .NET, JavaScriptu, Javy, Pythonu, Androidu a iOS.

Další informace o nastavení prostředí ve veřejné dokumentaci naleznete v tématu Přehled knihovny Microsoft Authentication Library.

Poznámka:

Následující části popisují, jak vyměnit přístupový token Microsoft Entra pro přístupový token uživatele Teams pro konzolovou aplikaci.

Nastavení předpokladů

  • Nejnovější verze sady .NET SDK pro váš operační systém.

Konečný kód

Najděte finalizovaný kód pro tento rychlý start na GitHubu.

Nastavení

Vytvoření nové aplikace jazyka C#

V okně konzoly (například cmd, PowerShell nebo Bash) pomocí dotnet new příkazu vytvořte novou konzolovou aplikaci s názvem CommunicationAccessTokensQuickstart. Tento příkaz vytvoří jednoduchý projekt "Hello World" C# s jedním zdrojovým souborem: Program.cs.

dotnet new console -o CommunicationAccessTokensQuickstart

Změňte adresář na nově vytvořenou složku aplikace a pomocí dotnet build příkazu zkompilujte aplikaci.

cd CommunicationAccessTokensQuickstart
dotnet build

Nainstalujte balíček .

V adresáři aplikace nainstalujte knihovnu identit služby Azure Communication Services pro balíček .NET pomocí dotnet add package příkazu.

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

Nastavení architektury aplikace

Z adresáře projektu:

  1. Otevření souboru Program.cs v textovém editoru
  2. Přidání direktivy using pro zahrnutí Azure.Communication.Identity oboru názvů
  3. Aktualizace deklarace metody pro podporu asynchronního Main kódu

Začněte následujícím kódem:

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: Získání tokenu uživatele a ID objektu Microsoft Entra prostřednictvím knihovny MSAL

Prvním krokem v toku výměny tokenů je získání tokenu pro uživatele Teams pomocí Microsoft.Identity.Client. Následující kód načte ID klienta Microsoft Entra a ID tenanta z proměnných prostředí s názvem AAD_CLIENT_ID a AAD_TENANT_ID. Je nezbytné nakonfigurovat klienta MSAL se správnou autoritou na AAD_TENANT_ID základě proměnné prostředí, aby bylo možné načíst deklaraci ID objektu (oid) odpovídající uživateli v tenantovi Fabrikam a inicializovat proměnnou userObjectId .

// 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: Inicializace CommunicationIdentityClient

Inicializujete připojovací řetězecCommunicationIdentityClient. Následující kód načte připojovací řetězec pro prostředek z proměnné prostředí s názvem COMMUNICATION_SERVICES_CONNECTION_STRING. Zjistěte, jak spravovat připojovací řetězec vašeho prostředku.

Do metody Main přidejte následující kód:

// 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: Výměna přístupového tokenu Microsoft Entra uživatele Teams pro přístupový token komunikační identity

Použijte metodu GetTokenForTeamsUser k vydání přístupového tokenu pro uživatele Teams, který je možné použít se sadami SDK služby Azure Communication Services.

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

Spuštění kódu

Spusťte aplikaci z adresáře aplikace pomocí dotnet run příkazu.

dotnet run

Nastavení předpokladů

  • Node.js verze LTS active LTS a maintenance LTS (doporučuje se verze 8.11.1 a 10.14.1).

Konečný kód

Najděte finalizovaný kód pro tento rychlý start na GitHubu.

Nastavení

Vytvoření nové aplikace Node.js

Otevřete terminál nebo příkazové okno, vytvořte pro aplikaci nový adresář a přejděte na něj.

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

Spuštěním příkazu npm init -y vytvořte package.json soubor s výchozím nastavením.

npm init -y

Nainstalujte balíček .

npm install Pomocí příkazu nainstalujte sadu Azure Communication Services Identity SDK pro JavaScript.


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

Tato --save možnost vypíše knihovnu jako závislost v souboru package.json .

Nastavení architektury aplikace

Z adresáře projektu:

  1. Otevření nového textového souboru v editoru kódu

  2. require Přidání volání pro načteníCommunicationIdentityClient

  3. Vytvoření struktury pro program, včetně základního zpracování výjimek

    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. Uložte nový soubor jako issue-communication-access-token.js v adresáři access-tokens-quickstart .

Krok 1: Získání tokenu uživatele a ID objektu Microsoft Entra prostřednictvím knihovny MSAL

Prvním krokem v toku výměny tokenů je získání tokenu pro uživatele Teams pomocí Microsoft.Identity.Client. Následující kód načte ID klienta Microsoft Entra a ID tenanta z proměnných prostředí s názvem AAD_CLIENT_ID a AAD_TENANT_ID. Je nezbytné nakonfigurovat klienta MSAL se správnou autoritou na AAD_TENANT_ID základě proměnné prostředí, aby bylo možné načíst deklaraci ID objektu (oid) odpovídající uživateli v tenantovi Fabrikam a inicializovat proměnnou userObjectId .

// 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: Inicializace CommunicationIdentityClient

CommunicationIdentityClient Vytvořte instanci s připojovací řetězec. Následující kód načte připojovací řetězec pro prostředek z proměnné prostředí s názvem COMMUNICATION_SERVICES_CONNECTION_STRING. Zjistěte, jak spravovat připojovací řetězec vašeho prostředku.

Do metody then přidejte následující kód:

// 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: Výměna přístupového tokenu Microsoft Entra uživatele Teams pro přístupový token komunikační identity

Použijte metodu getTokenForTeamsUser k vydání přístupového tokenu pro uživatele Teams, který je možné použít se sadami SDK služby 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);

Spuštění kódu

Z příkazového řádku konzoly přejděte do adresáře obsahujícího soubor issue-communication-access-token.js a spusťte aplikaci spuštěním následujícího node příkazu.

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

Nastavení předpokladů

Konečný kód

Najděte finalizovaný kód pro tento rychlý start na GitHubu.

Nastavení

Vytvoření nové aplikace v Pythonu

  1. Otevřete terminál nebo příkazové okno, vytvořte pro aplikaci nový adresář a přejděte na něj.

    mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
    
  2. Pomocí textového editoru vytvořte soubor volaný exchange-communication-access-tokens.py v kořenovém adresáři projektu a přidejte strukturu programu, včetně základního zpracování výjimek. Do tohoto souboru přidáte veškerý zdrojový kód pro tento rychlý start v následujících částech.

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

Nainstalujte balíček .

V adresáři aplikace nainstalujte pomocí pip install příkazu sadu SDK identity služby Azure Communication Services pro Python.

pip install azure-communication-identity
pip install msal

Krok 1: Získání tokenu uživatele a ID objektu Microsoft Entra prostřednictvím knihovny MSAL

Prvním krokem v toku výměny tokenů je získání tokenu pro uživatele Teams pomocí Microsoft.Identity.Client. Na webu Azure Portal nakonfigurujte identifikátor URI přesměrování vaší mobilní a desktopové aplikace jako http://localhost. Následující kód načte ID klienta Microsoft Entra a ID tenanta z proměnných prostředí s názvem AAD_CLIENT_ID a AAD_TENANT_ID. Je nezbytné nakonfigurovat klienta MSAL se správnou autoritou na AAD_TENANT_ID základě proměnné prostředí, aby bylo možné načíst deklaraci ID objektu (oid) odpovídající uživateli v tenantovi Fabrikam a inicializovat proměnnou user_object_id .

# 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: Inicializace CommunicationIdentityClient

CommunicationIdentityClient Vytvořte instanci s připojovací řetězec. Následující kód načte připojovací řetězec pro prostředek z proměnné prostředí s názvem COMMUNICATION_SERVICES_CONNECTION_STRING. Zjistěte, jak spravovat připojovací řetězec vašeho prostředku.

Přidejte tento kód do 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: Výměna přístupového tokenu Microsoft Entra uživatele Teams pro přístupový token komunikační identity

Použijte metodu get_token_for_teams_user k vydání přístupového tokenu pro uživatele Teams, který je možné použít se sadami SDK služby 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)

Spuštění kódu

Z příkazového řádku konzoly přejděte do adresáře obsahujícího soubor exchange-teams-access-tokens.py a spusťte aplikaci spuštěním následujícího python příkazu.

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

Nastavení předpokladů

Konečný kód

Najděte finalizovaný kód pro tento rychlý start na GitHubu.

Nastavení

Vytvoření nové aplikace v Javě

Otevřete terminál nebo příkazové okno. Přejděte do adresáře, do kterého chcete vytvořit aplikaci v Javě. Spuštěním následujícího příkazu vygenerujte projekt Java ze maven-archetype-quickstart šablony.

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

Všimněte si, že úloha generování vytvořila adresář se stejným názvem jako .artifactId V tomto adresáři src/main/java obsahuje adresář zdrojový kód projektu, src/test/java directory obsahuje zdroj testů a pom.xml soubor je projektový objektový model projektu nebo POM.

Nainstalujte balíček .

Otevřete soubor v textovém pom.xml editoru. Do skupiny závislostí přidejte následující prvky závislostí.

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

Nastavení architektury aplikace

Z adresáře projektu:

  1. Přejděte k adresáři /src/main/java/com/communication/quickstart.
  2. Otevření souboru v editoru App.java
  3. System.out.println("Hello world!"); Nahrazení příkazu
  4. Přidání import direktiv

Začněte následujícím kódem:

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: Získání tokenu uživatele a ID objektu Microsoft Entra prostřednictvím knihovny MSAL

Prvním krokem v toku výměny tokenů je získání tokenu pro uživatele Teams pomocí Microsoft.Identity.Client. Je nezbytné nakonfigurovat klienta MSAL se správnou autoritou na tenantId základě proměnné, aby bylo možné načíst deklaraci ID objektu (oid) odpovídající uživateli v tenantovi Fabrikam a inicializovat proměnnou userObjectId .

// 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: Inicializace CommunicationIdentityClient

CommunicationIdentityClient Vytvořte instanci pomocí přístupového klíče a koncového bodu vašeho prostředku. Zjistěte, jak spravovat připojovací řetězec vašeho prostředku. Kromě toho můžete klienta inicializovat pomocí libovolného vlastního klienta HTTP, který implementuje com.azure.core.http.HttpClient rozhraní.

Do metody main přidejte následující kód:

//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: Výměna přístupového tokenu Microsoft Entra uživatele Teams pro přístupový token komunikační identity

Použijte metodu getTokenForTeamsUser k vydání přístupového tokenu pro uživatele Teams, který je možné použít se sadami SDK služby 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());

Spuštění kódu

Pomocí příkazu přejděte do adresáře obsahujícího pom.xml soubor a zkompilujte projekt mvn compile .

Pak balíček sestavte.

mvn package

Spuštěním následujícího mvn příkazu spusťte aplikaci.

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

Akce uživatele

Uživatel představuje uživatele společnosti Fabrikam aplikace Contoso. Uživatelské prostředí je znázorněno v následujícím diagramu:

Diagram akcí uživatelů pro povolení podpory služeb Azure Communication Services pro identity Teams

  1. Uživatel Fabrikam používá klientskou aplikaci Contoso a zobrazí se výzva k ověření.
  2. Klientská aplikace Contoso používá knihovnu MSAL k ověření uživatele v tenantovi Fabrikam Microsoft Entra pro aplikaci Contoso pomocí komunikačních služeb Teams.ManageCalls a Teams.ManageChats.
  3. Ověřování se přesměruje na server, jak je definováno v identifikátoru URI přesměrování v knihovně MSAL a aplikaci Contoso.
  4. Server Contoso vyměňuje token uživatele Microsoft Entra pro přístupový token uživatele Teams pomocí sady SDK identity komunikačních služeb a vrátí přístupový token uživatele Teams do klientské aplikace.

S platným přístupovým tokenem pro uživatele Teams v klientské aplikaci můžou vývojáři integrovat sadu SDK pro volání komunikačních služeb a spravovat volání jako uživatel Teams.

Další kroky

V tomto rychlém startu jste se naučili:

  • Vytvořte a nakonfigurujte aplikaci v Microsoft Entra ID.
  • K vydání tokenu uživatele Microsoft Entra použijte knihovnu MSAL (Microsoft Authentication Library).
  • Sada SDK identity komunikačních služeb slouží k výměně tokenu uživatele Microsoft Entra pro přístupový token uživatele Teams.

Seznamte se s následujícími koncepty: