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
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Aktív Azure Communication Services-erőforrás és kapcsolati sztring. További információ: Azure Communication Services-erőforrás létrehozása.
- Microsoft Entra-példány Teams-licenccel rendelkező felhasználókkal. További információt a Teams licenckövetelményei között talál.
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.
- 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.
- A Contoso-rendszergazda API-engedélyeket ad hozzá a Communication Serviceshez
Teams.ManageCalls
ésTeams.ManageChats
a kommunikációs szolgáltatásokból. - A Contoso-rendszergazda engedélyezi az alkalmazás nyilvános ügyfélfolyamatát.
- 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.
- A Fabrikam-rendszergazda kommunikációs szolgáltatásokat
Teams.ManageCalls
ésTeams.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 ésTeams.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.
- Lépjen a Microsoft Entra alkalmazásra az Azure Portalon, és válassza ki az API-engedélyeket
- Válassza az Engedélyek hozzáadása lehetőséget
- Az Engedélyek hozzáadása menüben válassza az Azure Communication Services lehetőséget
- Válassza ki a Teams.ManageCalls és a Teams.ManageChats engedélyeket, majd válassza az Engedélyek hozzáadása lehetőséget
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.
5. lépés: Rendszergazdai hozzájárulás megadása
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:
- 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.
- 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:
- Jelentkezzen be az Azure Portal felületére rendszergazdaként.
- Menjen a Microsoft Entra ID-ra.
- A Vállalati alkalmazások panelen állítsa az Alkalmazástípus szűrőt a Minden alkalmazásra.
- Az alkalmazások szűrésére szolgáló mezőbe írja be a Contoso-alkalmazás nevét.
- Válassza az Alkalmazás lehetőséget.
- Válassza ki a szolgáltatásnevet a szükséges névvel.
- 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.
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:
- 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.
- 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
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:
- Program.cs fájl megnyitása szövegszerkesztőben
using
Irányelv hozzáadása aAzure.Communication.Identity
névtér hozzáadásához- 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_ID
a 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_STRING
kö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
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:
Új szövegfájl megnyitása a kódszerkesztőben
require
Hívás hozzáadása aCommunicationIdentityClient
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}!`))
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_ID
a 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_STRING
kö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
- Python 3.8+.
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
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
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_ID
a 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_STRING
kö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 Java Development Kit (JDK) 8- vagy újabb verziója.
- Apache Maven.
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:
- Lépjen a következő könyvtárba:
/src/main/java/com/communication/quickstart
- A fájl megnyitása a
App.java
szerkesztőben System.out.println("Hello world!");
Az utasítás cseréje- 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ó:
- A Fabrikam-felhasználó a Contoso ügyfélalkalmazást használja, és a rendszer kéri a hitelesítést.
- 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.
- 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.
- 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.
Megbízható hitelesítési szolgáltatás létrehozása Teams-felhasználók számáraTeams-felhasználók hívása Teams-felhasználóként
Ismerje meg a következő fogalmakat:
- Használati esetek Teams-felhasználóként történő kommunikációhoz
- Az Azure Communication Services támogatja a Teams-identitásokat
- A Teams együttműködése
- Egy-bérlős és több-bérlős hitelesítés Teams-felhasználók számára
- Kommunikációs hozzáférési jogkivonatok létrehozása és kezelése Teams-felhasználók számára egyoldalas alkalmazásban (SPA)