Megosztás a következőn keresztül:


Rövid útmutató: Hozzáférési jogkivonatok beállítása és kezelése Teams-felhasználók számára

Ebben a rövid útmutatóban egy .NET-konzolalkalmazást fog létrehozni egy Microsoft 365-felhasználó hitelesítéséhez a Microsoft Authentication Library (MSAL) használatával, valamint egy Microsoft Entra felhasználói jogkivonat lekérésével. Ezt a jogkivonatot a Teams-felhasználó hozzáférési jogkivonatára cseréli az Azure Communication Services Identity SDK-val. A Teams-felhasználó hozzáférési jogkivonatát ezután a Communication Services Calling SDK használhatja a hívási képesség Teams-felhasználóként való integrálásához.

Feljegyzés

Ha éles környezetben van, javasoljuk, hogy implementálja ezt az exchange-mechanizmust a háttérszolgáltatásokban, mert a cserekérések titkos kóddal vannak aláírva.

Előfeltételek

Bevezetés

A Teams-identitások a Microsoft Entra-azonosítóban lévő bérlőkhöz vannak kötve. Az alkalmazást használhatják ugyanabból vagy egy másik bérlőből származó felhasználók. Ebben a rövid útmutatóban egy több-bérlős használati eseten fog dolgozni több szereplővel: a Contoso és a Fabrikam fiktív vállalat felhasználóival, fejlesztőivel és rendszergazdáival. Ebben a használati esetben a Contoso egy olyan vállalat, amely a Fabrikam szolgáltatásaként (SaaS) készít szoftvereket.

A következő szakaszok végigvezetik a rendszergazdák, fejlesztők és felhasználók lépésein. A diagramok a több-bérlős használati esetet mutatják be. Ha egyetlen bérlővel dolgozik, hajtsa végre a Contoso és a Fabrikam összes lépését egyetlen bérlőben.

Rendszergazdai műveletek

A rendszergazdai szerepkör kiterjesztett engedélyekkel rendelkezik a Microsoft Entra-azonosítóban. A szerepkör tagjai erőforrásokat állíthatnak be, és információkat olvashatnak az Azure Portalról. Az alábbi ábrán láthatja az összes olyan műveletet, amelyet a rendszergazdáknak végre kell hajtaniuk.

Rendszergazdai műveletek az Azure Communication Services Teams-identitásokhoz való támogatásának engedélyezéséhez.

  1. A Contoso-rendszergazda létrehoz vagy kiválaszt egy meglévő alkalmazást a Microsoft Entra-azonosítóban. A támogatott fióktípusok tulajdonság határozza meg, hogy a különböző bérlők felhasználói hitelesíthetők-e az alkalmazással. Az Átirányítási URI tulajdonság átirányít egy sikeres hitelesítési kérést a Contoso-kiszolgálóra.
  2. A Contoso-rendszergazda API-engedélyeket ad hozzá a Communication Serviceshez Teams.ManageCalls és Teams.ManageChats a kommunikációs szolgáltatásokból.
  3. A Contoso-rendszergazda engedélyezi az alkalmazás nyilvános ügyfélfolyamatát.
  4. A Contoso-rendszergazda létrehozza vagy kiválasztja a meglévő kommunikációs szolgáltatásokat, amelyeket a rendszer a cserekérések hitelesítésére használ. A Microsoft Entra felhasználói jogkivonatok a Teams-felhasználó hozzáférési jogkivonatára lesznek cserélve. További információ: Communication Services-erőforrások létrehozása és kezelése.
  5. A Fabrikam-rendszergazda kommunikációs szolgáltatásokat Teams.ManageCalls és Teams.ManageChats engedélyeket biztosít a Contoso-alkalmazásnak. Erre a lépésre akkor van szükség, ha csak a Fabrikam-rendszergazda adhat hozzáférést az alkalmazáshoz az engedélyekkel és Teams.ManageChats engedélyekkelTeams.ManageCalls.

1. lépés: Microsoft Entra-alkalmazásregisztráció létrehozása vagy Microsoft Entra-alkalmazás kiválasztása

A felhasználókat hitelesíteni kell a Microsoft Entra-alkalmazásokon az Azure Communication Service Teams.ManageCalls és a Teams.ManageChats engedélyekkel. Ha nem rendelkezik olyan meglévő alkalmazással, amelyet ehhez a rövid útmutatóhoz szeretne használni, létrehozhat egy új alkalmazásregisztrációt.

A következő alkalmazásbeállítások befolyásolják a felhasználói élményt:

  • A Támogatott fióktípusok tulajdonság határozza meg, hogy az alkalmazás egyetlen bérlő (csak ebben a szervezeti címtárban lévő fiókok) vagy több-bérlős ("Bármely szervezeti címtárban lévő fiókok"). Ebben a forgatókönyvben több-bérlőt is használhat.
  • Az átirányítási URI határozza meg azt az URI-t, ahol a hitelesítési kérést a rendszer a hitelesítés után átirányítja. Ebben a forgatókönyvben használhatja a nyilvános ügyfelet/natív ügyfelet (mobil & asztali), és URI-ként beírhatja http://localhost .

További információ: Alkalmazás regisztrálása a Microsoft Identitásplatform.

Az alkalmazás regisztrálása után megjelenik egy azonosító az áttekintésben. Ezt az azonosítót, az alkalmazás (ügyfél) azonosítóját a következő lépésekben használjuk.

2. lépés: Nyilvános ügyfélfolyamatok engedélyezése

Az alkalmazás Hitelesítési paneljén megjelenik egy konfigurált platform nyilvános ügyfél/natív (mobil & asztali) számára, amely egy átirányítási URI-ra http://localhostmutat. A panel alján megjelenik egy Nyilvános ügyfélfolyamatok engedélyezése kapcsoló vezérlőelem, amely ebben a rövid útmutatóban Igen értékre van állítva.

3. lépés: A Communication Services-engedélyek hozzáadása az alkalmazásban

Az alkalmazásnak deklarálnia kell a Teams.ManageCalls és a Teams.ManageChats engedélyeket, hogy hozzáférhessen a Teams hívási képességeihez a bérlőben. A Teams-felhasználó egy Microsoft Entra felhasználói jogkivonatot kérne ezzel az engedéllyel a jogkivonatok cseréjéhez.

  1. Lépjen a Microsoft Entra alkalmazásra az Azure Portalon, és válassza ki az API-engedélyeket
  2. Válassza az Engedélyek hozzáadása lehetőséget
  3. Az Engedélyek hozzáadása menüben válassza az Azure Communication Services lehetőséget
  4. Válassza ki a Teams.ManageCalls és a Teams.ManageChats engedélyeket, majd válassza az Engedélyek hozzáadása lehetőséget

Adja hozzá a Teams.ManageCalls és a Teams.ManageChats engedélyt az előző lépésben létrehozott Microsoft Entra alkalmazáshoz.

4. lépés: Communication Services-erőforrás létrehozása vagy kiválasztása

A Communication Services-erőforrás a Microsoft Entra felhasználói jogkivonatának a Teams-felhasználó hozzáférési jogkivonatára való cseréjére irányuló összes kérés hitelesítésére szolgál. Ezt a cserét a Communication Services Identity SDK-val indíthatja el, amelyet egy hozzáférési kulccsal hitelesíthet, vagy azure-beli szerepköralapú hozzáférés-vezérléssel (Azure RBAC). A hozzáférési kulcsot lekérheti az Azure Portalon, vagy az Azure RBAC konfigurálásával a Hozzáférés-vezérlés (IAM) panelen a Communication Services-erőforrás által.

Ha új Communication Services-erőforrást szeretne létrehozni, olvassa el a Communication Services-erőforrások létrehozása és kezelése című témakört.

A Microsoft Entra-bérlő konfigurálható úgy, hogy a Microsoft Entra rendszergazdai hozzájárulást igényeljen az alkalmazás Teams.ManageCalls és Teams.ManageChats engedélyéhez. Ilyen esetben a Microsoft Entra rendszergazdájának engedélyt kell adnia a Contoso alkalmazásnak a Communication Services Teams.ManageCalls és a Teams.ManageChats szolgáltatáshoz. A Fabrikam Microsoft Entra rendszergazdája egy egyedi URL-címen keresztül adja meg a hozzájárulást.

A következő szerepkörök adhatnak hozzájárulást egy vállalat nevében:

  • Globális rendszergazda
  • Alkalmazás rendszergazdája
  • Felhőalkalmazás-rendszergazda

Ha ellenőrizni szeretné a szerepköröket az Azure Portalon, tekintse meg az Azure-szerepkör-hozzárendelések listáját.

Rendszergazdai hozzájárulási URL-cím létrehozásához a Fabrikam Microsoft Entra rendszergazdája a következő lépéseket hajtja végre:

  1. Az URL-címben https://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}a rendszergazda lecseréli a(z) {Tenant_ID} elemet a Fabrikam bérlőazonosítóra, és a(z) {Application_ID} helyett a Contoso-alkalmazásazonosítót.
  2. A rendszergazda bejelentkezik, és engedélyeket ad a szervezet nevében.

A Contoso-alkalmazás szolgáltatásnév a Fabrikam-bérlőben akkor jön létre, ha a jóváhagyás meg van adva. A Fabrikam-rendszergazda az alábbi lépések végrehajtásával ellenőrizheti a Microsoft Entra-azonosítóban található hozzájárulást:

  1. Jelentkezzen be az Azure Portal felületére rendszergazdaként.
  2. Menjen a Microsoft Entra ID-ra.
  3. A Vállalati alkalmazások panelen állítsa az Alkalmazástípus szűrőt a Minden alkalmazásra.
  4. Az alkalmazások szűrésére szolgáló mezőbe írja be a Contoso-alkalmazás nevét.
  5. Válassza az Alkalmazás lehetőséget.
  6. Válassza ki a szolgáltatásnevet a szükséges névvel.
  7. Lépjen az Engedélyek panelre.

Láthatja, hogy a Communication Services Teams.ManageCalls és a Teams.ManageChats engedélyeinek állapota {Directory_name} számára van megadva.

Ha "Az alkalmazás megpróbál hozzáférni egy olyan szolgáltatáshoz, amelyhez a(z) "1fd5118e-2576-4263-8130-9503064c837a" (Azure Communication Services) szolgáltatáshoz próbál hozzáférni, amelyhez a szervezete ({GUID}) nem rendelkezik szolgáltatásnévvel. Kérje meg a rendszergazdát, hogy tekintse át a szolgáltatás-előfizetések konfigurációját, vagy járuljon hozzá az alkalmazáshoz a szükséges szolgáltatásnév létrehozásához." A Microsoft Entra-bérlő nem rendelkezik az Azure Communication Services-alkalmazáshoz tartozó szolgáltatásnévvel. A probléma megoldásához használja a PowerShellt Microsoft Entra-rendszergazdaként a bérlőhöz való csatlakozáshoz. Cserélje le Tenant_ID a Microsoft Entra-bérlő azonosítójára.

Az alábbiak szerint az Application.ReadWrite.All parancsra lesz szüksége.

Képernyőkép az Application Read Write All alkalmazásról.

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

Ha a parancs nem található, indítsa el a PowerShellt rendszergazdaként, és telepítse a Microsoft Graph-csomagot.

Install-Module Microsoft.Graph

Ezután hajtsa végre a következő parancsot egy szolgáltatásnév bérlőhöz való hozzáadásához. Ne módosítsa az alkalmazásazonosító GUID-azonosítóját.

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

Fejlesztői műveletek

A Contoso fejlesztőjének be kell állítania az ügyfélalkalmazást a felhasználók hitelesítéséhez. A fejlesztőnek ezután létre kell hoznia egy végpontot a háttérkiszolgálón a Microsoft Entra felhasználói jogkivonatának feldolgozásához az átirányítás után. A Microsoft Entra felhasználói jogkivonat fogadása után a rendszer kicseréli a Teams-felhasználó hozzáférési jogkivonatára, és visszakerül az ügyfélalkalmazásba.

A fejlesztő szükséges műveletei az alábbi ábrán láthatók:

Az Azure Communication Services Teams-identitásokhoz való támogatásának engedélyezését célzó fejlesztői műveletek diagramja.

  1. A Contoso fejlesztő a Microsoft Authentication Library (MSAL) konfigurálásával hitelesíti a felhasználót a Korábban a Communication Services Teams.ManageCalls és Teams.ManageChats rendszergazda által korábban létrehozott alkalmazáshoz.
  2. A Contoso fejlesztője inicializálja a Communication Services Identity SDK-t, és az identity SDK-val kicseréli a Bejövő Microsoft Entra felhasználói jogkivonatot a Teams-felhasználó hozzáférési jogkivonatára. A Teams-felhasználó hozzáférési jogkivonata ezután visszakerül az ügyfélalkalmazásba.

Az MSAL használatával a fejlesztők microsoft entra felhasználói jogkivonatokat szerezhetnek be a Microsoft Identitásplatform végpontról a felhasználók hitelesítéséhez és a biztonságos webes API-k eléréséhez. A kommunikációs szolgáltatásokhoz való biztonságos hozzáférés biztosítására használható. Az MSAL számos különböző alkalmazásarchitektúrát és platformot támogat, például .NET, JavaScript, Java, Python, Android és iOS rendszert.

A környezetek nyilvános dokumentációban való beállításával kapcsolatos további információkért tekintse meg a Microsoft Authentication Library áttekintését.

Feljegyzés

A következő szakaszok bemutatják, hogyan cserélheti le a Microsoft Entra hozzáférési jogkivonatot a Teams-felhasználó hozzáférési jogkivonatára a konzolalkalmazáshoz.

Előfeltételek beállítása

  • Az operációs rendszer legújabb .NET SDK-verziója.

A végső kód

Keresse meg a gitHubon a rövid útmutató véglegesített kódját.

Beállítás

Új C#-alkalmazás létrehozása

Egy konzolablakban (például parancsmag, PowerShell vagy Bash) a dotnet new paranccsal hozzon létre egy új konzolalkalmazást a névvel CommunicationAccessTokensQuickstart. Ez a parancs egy egyszerű "„Helló világ!” alkalmazás" C#-projektet hoz létre egyetlen forrásfájllal: Program.cs.

dotnet new console -o CommunicationAccessTokensQuickstart

Módosítsa a könyvtárat az újonnan létrehozott alkalmazásmappára, és használja a dotnet build parancsot az alkalmazás fordításához.

cd CommunicationAccessTokensQuickstart
dotnet build

Telepítse a(z) csomagot

Amíg továbbra is az alkalmazáskönyvtárban van, telepítse a .NET-csomaghoz készült Azure Communication Services Identity-kódtárat a dotnet add package parancs használatával.

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

Az alkalmazás-keretrendszer beállítása

A projektkönyvtárból:

  1. Program.cs fájl megnyitása szövegszerkesztőben
  2. using Irányelv hozzáadása a Azure.Communication.Identity névtér hozzáadásához
  3. A metódus deklarációjának frissítése az Main aszinkron kód támogatásához

A kezdéshez használja a következő kódot:

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

1. lépés: A Microsoft Entra felhasználói jogkivonatának és objektumazonosítójának fogadása az MSAL-kódtáron keresztül

A jogkivonatcsere folyamatának első lépése egy jogkivonat lekérése a Teams-felhasználó számára a Microsoft.Identity.Client használatával. Az alábbi kód lekéri a Microsoft Entra ügyfél-azonosítóját és bérlőazonosítóját az elnevezett és AAD_TENANT_IDa AAD_CLIENT_ID . Alapvető fontosságú, hogy az MSAL-ügyfelet a környezeti változó alapján AAD_TENANT_ID a megfelelő szolgáltatóval konfigurálja, hogy lekérhesse a Fabrikam bérlőjében lévő felhasználónak megfelelő Objektumazonosító (oid) jogcímet, és inicializálhassa a változót 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;

2. lépés: A CommunicationIdentityClient inicializálása

Inicializáljon egy kapcsolati sztringCommunicationIdentityClient. Az alábbi kód lekéri az erőforrás kapcsolati sztring egy nevesített COMMUNICATION_SERVICES_CONNECTION_STRINGkörnyezeti változóból. Megtudhatja, hogyan kezelheti az erőforrás kapcsolati sztring.

Adja hozzá a következő kódot a Main metódushoz:

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

3. lépés: A Teams-felhasználó Microsoft Entra hozzáférési jogkivonatának cseréje kommunikációs identitás hozzáférési jogkivonatra

Ezzel a GetTokenForTeamsUser módszerrel kibocsáthat egy hozzáférési jogkivonatot a Teams-felhasználó számára, amely az Azure Communication Services SDK-kkal használható.

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

A kód futtatása

Futtassa az alkalmazást az alkalmazáskönyvtárból a dotnet run paranccsal.

dotnet run

Előfeltételek beállítása

  • Node.js Active LTS és Maintenance LTS verzió (8.11.1 és 10.14.1 ajánlott).

A végső kód

Keresse meg a gitHubon a rövid útmutató véglegesített kódját.

Beállítás

Új Node.js-alkalmazás létrehozása

Nyissa meg a terminált vagy a parancsablakot, és hozzon létre egy új könyvtárat az alkalmazáshoz, és navigáljon hozzá.

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

Futtassa npm init -y az package.json alapértelmezett beállításokkal rendelkező fájl létrehozásához.

npm init -y

Telepítse a(z) csomagot

npm install A parancs használatával telepítse az Azure Communication Services Identity SDK for JavaScriptet.


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

A --save beállítás függőségként sorolja fel a tárat a package.json fájlban.

Az alkalmazás-keretrendszer beállítása

A projektkönyvtárból:

  1. Új szövegfájl megnyitása a kódszerkesztőben

  2. require Hívás hozzáadása aCommunicationIdentityClient

  3. A program struktúrájának létrehozása, beleértve az alapvető kivételkezelést is

    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. Mentse az új fájlt a access-tokens-quickstart könyvtárban.issue-communication-access-token.js

1. lépés: A Microsoft Entra felhasználói jogkivonatának és objektumazonosítójának fogadása az MSAL-kódtáron keresztül

A jogkivonatcsere folyamatának első lépése egy jogkivonat lekérése a Teams-felhasználó számára a Microsoft.Identity.Client használatával. Az alábbi kód lekéri a Microsoft Entra ügyfél-azonosítóját és bérlőazonosítóját az elnevezett és AAD_TENANT_IDa AAD_CLIENT_ID . Alapvető fontosságú, hogy az MSAL-ügyfelet a környezeti változó alapján AAD_TENANT_ID a megfelelő szolgáltatóval konfigurálja, hogy lekérhesse a Fabrikam bérlőjében lévő felhasználónak megfelelő Objektumazonosító (oid) jogcímet, és inicializálhassa a változót 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);
    });
});

2. lépés: A CommunicationIdentityClient inicializálása

Példányosítás a CommunicationIdentityClient kapcsolati sztring. Az alábbi kód lekéri az erőforrás kapcsolati sztring egy nevesített COMMUNICATION_SERVICES_CONNECTION_STRINGkörnyezeti változóból. Megtudhatja, hogyan kezelheti az erőforrás kapcsolati sztring.

Adja hozzá a következő kódot a then metódushoz:

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

3. lépés: A Teams-felhasználó Microsoft Entra hozzáférési jogkivonatának cseréje kommunikációs identitás hozzáférési jogkivonatra

Ezzel a getTokenForTeamsUser módszerrel kibocsáthat egy hozzáférési jogkivonatot a Teams-felhasználó számára, amely az Azure Communication Services SDK-kkal használható.

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

A kód futtatása

Egy konzol parancssorából keresse meg a issue-communication-access-token.js fájlt tartalmazó könyvtárat, majd futtassa a következő node parancsot az alkalmazás futtatásához.

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

Előfeltételek beállítása

A végső kód

Keresse meg a gitHubon a rövid útmutató véglegesített kódját.

Beállítás

Új Python-alkalmazás létrehozása

  1. Nyissa meg a terminált vagy a parancsablakot, és hozzon létre egy új könyvtárat az alkalmazáshoz, és navigáljon hozzá.

    mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
    
  2. Szövegszerkesztővel hozzon létre egy fájlt exchange-communication-access-tokens.py a projekt gyökérkönyvtárában, és adja hozzá a program struktúráját, beleértve az alapvető kivételkezelést is. A rövid útmutató összes forráskódját a következő szakaszokban adhatja hozzá ehhez a fájlhoz.

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

Telepítse a(z) csomagot

Miközben továbbra is az alkalmazáskönyvtárban van, telepítse az Azure Communication Services Identity SDK for Python-csomagot a pip install parancs használatával.

pip install azure-communication-identity
pip install msal

1. lépés: A Microsoft Entra felhasználói jogkivonatának és objektumazonosítójának fogadása az MSAL-kódtáron keresztül

A jogkivonatcsere folyamatának első lépése egy jogkivonat lekérése a Teams-felhasználó számára a Microsoft.Identity.Client használatával. Az Azure Portalon konfigurálja a "Mobil- és asztali alkalmazás" átirányítási URI-ját .http://localhost Az alábbi kód lekéri a Microsoft Entra ügyfél-azonosítóját és bérlőazonosítóját az elnevezett és AAD_TENANT_IDa AAD_CLIENT_ID . Alapvető fontosságú, hogy az MSAL-ügyfelet a környezeti változó alapján AAD_TENANT_ID a megfelelő szolgáltatóval konfigurálja, hogy lekérhesse a Fabrikam bérlőjében lévő felhasználónak megfelelő Objektumazonosító (oid) jogcímet, és inicializálhassa a változót 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"] 

2. lépés: A CommunicationIdentityClient inicializálása

Példányosítás a CommunicationIdentityClient kapcsolati sztring. Az alábbi kód lekéri az erőforrás kapcsolati sztring egy nevesített COMMUNICATION_SERVICES_CONNECTION_STRINGkörnyezeti változóból. Megtudhatja, hogyan kezelheti az erőforrás kapcsolati sztring.

Adja hozzá ezt a kódot a blokkon try belül:

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

3. lépés: A Teams-felhasználó Microsoft Entra hozzáférési jogkivonatának cseréje kommunikációs identitás hozzáférési jogkivonatra

Ezzel a get_token_for_teams_user módszerrel kibocsáthat egy hozzáférési jogkivonatot a Teams-felhasználó számára, amely az Azure Communication Services SDK-kkal használható.

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

A kód futtatása

Egy konzol parancssorából keresse meg a exchange-teams-access-tokens.py fájlt tartalmazó könyvtárat, majd futtassa a következő python parancsot az alkalmazás futtatásához.

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

Előfeltételek beállítása

A végső kód

Keresse meg a gitHubon a rövid útmutató véglegesített kódját.

Beállítás

Új Java-alkalmazás létrehozása

Nyissa meg a terminált vagy a parancsablakot. Lépjen arra a könyvtárra, ahol létre szeretné hozni a Java-alkalmazást. Futtassa az alábbi parancsot a Java-projekt sablonból való maven-archetype-quickstart létrehozásához.

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

Megfigyelheti, hogy a "létrehozás" feladat létrehozott egy könyvtárat, amelynek a neve megegyezik a artifactId. Ebben a könyvtárban a src/main/java könyvtár tartalmazza a projekt forráskódját, a src/test/java directory tesztforrást, a pom.xml fájl pedig a projekt projektobjektum-modelljét vagy POM-jét.

Telepítse a(z) csomagot

Nyissa meg a pom.xml fájlt a szövegszerkesztőben. Adja hozzá a következő függőségi elemeket a függőségek csoportjához.

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

Az alkalmazás-keretrendszer beállítása

A projektkönyvtárból:

  1. Lépjen a következő könyvtárba: /src/main/java/com/communication/quickstart
  2. A fájl megnyitása a App.java szerkesztőben
  3. System.out.println("Hello world!"); Az utasítás cseréje
  4. Irányelvek hozzáadása import

A kezdéshez használja a következő kódot:

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

1. lépés: A Microsoft Entra felhasználói jogkivonatának és objektumazonosítójának fogadása az MSAL-kódtáron keresztül

A jogkivonatcsere folyamatának első lépése egy jogkivonat lekérése a Teams-felhasználó számára a Microsoft.Identity.Client használatával. Alapvető fontosságú, hogy az MSAL-ügyfelet a változó alapján tenantId a megfelelő szolgáltatóval konfigurálja, hogy lekérhesse a Fabrikam bérlőjében lévő felhasználónak megfelelő objektumazonosító (oid) jogcímet, és inicializálhassa a változót 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);

2. lépés: A CommunicationIdentityClient inicializálása

Példányosítás az CommunicationIdentityClient erőforrás hozzáférési kulcsával és végpontjával. Megtudhatja, hogyan kezelheti az erőforrás kapcsolati sztring. Emellett inicializálhatja az ügyfelet bármely egyéni HTTP-ügyféllel, amely a com.azure.core.http.HttpClient felületet implementálja.

Adja hozzá a következő kódot a main metódushoz:

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

3. lépés: A Teams-felhasználó Microsoft Entra hozzáférési jogkivonatának cseréje kommunikációs identitás hozzáférési jogkivonatra

Ezzel a getTokenForTeamsUser módszerrel kibocsáthat egy hozzáférési jogkivonatot a Teams-felhasználó számára, amely az Azure Communication Services SDK-kkal használható.

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

A kód futtatása

Lépjen a fájlt tartalmazó pom.xml könyvtárra, és fordítsa le a projektet a mvn compile parancs használatával.

Ezután hozza létre a csomagot.

mvn package

Futtassa a következő mvn parancsot az alkalmazás végrehajtásához.

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

Felhasználói műveletek

A felhasználó a Contoso alkalmazás Fabrikam-felhasználóit jelöli. A felhasználói élmény az alábbi ábrán látható:

Az Azure Communication Services Teams-identitásokhoz való támogatásának engedélyezéséhez szükséges felhasználói műveletek diagramja.

  1. A Fabrikam-felhasználó a Contoso ügyfélalkalmazást használja, és a rendszer kéri a hitelesítést.
  2. A Contoso ügyfélalkalmazás az MSAL használatával hitelesíti a felhasználót a Contoso-alkalmazás Fabrikam Microsoft Entra-bérlőjén a Communication Services Teams.ManageCalls és a Teams.ManageChats engedélyekkel.
  3. A rendszer átirányítja a hitelesítést a kiszolgálóra az MSAL és a Contoso alkalmazás Átirányítás URI tulajdonságában meghatározottak szerint.
  4. A Contoso-kiszolgáló a Microsoft Entra felhasználói jogkivonatot a Teams-felhasználó hozzáférési jogkivonatára cseréli a Communication Services Identity SDK használatával, és visszaadja a Teams-felhasználó hozzáférési jogkivonatát az ügyfélalkalmazásnak.

A Teams-felhasználó érvényes hozzáférési jogkivonatával az ügyfélalkalmazásban a fejlesztők integrálhatják a Communication Services Calling SDK-t, és Teams-felhasználóként kezelhetik a hívásokat.

Következő lépések

Ennek a rövid útmutatónak a segítségével megtanulta a következőket:

  • Alkalmazás létrehozása és konfigurálása a Microsoft Entra-azonosítóban.
  • A Microsoft Authentication Library (MSAL) használatával állít ki Egy Microsoft Entra felhasználói jogkivonatot.
  • A Communication Services Identity SDK használatával cserélje le a Microsoft Entra felhasználói jogkivonatát a Teams-felhasználó hozzáférési jogkivonatára.

Ismerje meg a következő fogalmakat: