Hızlı Başlangıç: Teams kullanıcıları için erişim belirteçlerini ayarlama ve yönetme
Bu hızlı başlangıçta, Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanarak ve bir Microsoft Entra kullanıcı belirtecini alarak bir Microsoft 365 kullanıcısının kimliğini doğrulamak için bir .NET konsol uygulaması oluşturacaksınız. Ardından bu belirteci, Azure İletişim Hizmetleri Kimlik SDK'sı ile Teams kullanıcısının erişim belirteci ile değiştireceksiniz. Teams kullanıcısı için erişim belirteci daha sonra İletişim Hizmetleri Arama SDK'sı tarafından çağrı özelliğini Teams kullanıcısı olarak tümleştirmek için kullanılabilir.
Not
Bir üretim ortamındayken, bu değişim mekanizmasını arka uç hizmetlerinde uygulamanızı öneririz çünkü değişim istekleri gizli diziyle imzalandı.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Etkin bir Azure İletişim Hizmetleri kaynağı ve bağlantı dizesi. Daha fazla bilgi için bkz. Azure İletişim Hizmetleri kaynağı oluşturma.
- Teams lisansına sahip kullanıcılar içeren bir Microsoft Entra örneği. Daha fazla bilgi için bkz . Teams Lisans gereksinimleri.
Giriş
Teams kimlikleri, Microsoft Entra Id'deki kiracılara bağlıdır. Uygulamanız aynı veya başka bir kiracıdaki kullanıcılar tarafından kullanılabilir. Bu hızlı başlangıçta, contoso ve Fabrikam kurgusal şirketlerinden kullanıcılar, geliştiriciler ve yöneticiler olmak üzere birden çok aktörle çok kiracılı bir kullanım örneği üzerinden çalışacaksınız. Bu kullanım örneğinde Contoso, Fabrikam için hizmet olarak yazılım (SaaS) oluşturan bir şirkettir.
Aşağıdaki bölümler yöneticilere, geliştiricilere ve kullanıcılara yönelik adımlarda size yol gösterir. Diyagramlar çok kiracılı kullanım örneğini gösterir. Tek bir kiracıyla çalışıyorsanız Contoso ve Fabrikam'daki tüm adımları tek bir kiracıda yürütün.
Yönetici eylemleri
Yönetici rolü, Microsoft Entra Id'de genişletilmiş izinlere sahiptir. Bu rolün üyeleri kaynakları ayarlayabilir ve Azure portalından bilgileri okuyabilir. Aşağıdaki diyagramda, Yöneticiler tarafından yürütülmesi gereken tüm eylemleri görebilirsiniz.
- Contoso Yöneticisi, Microsoft Entra Id'de mevcut bir uygulamayı oluşturur veya seçer. Desteklenen hesap türleri özelliği, çeşitli kiracılardan kullanıcıların uygulamada kimlik doğrulaması yapıp yapamayacağını tanımlar. Redirect URI özelliği başarılı bir kimlik doğrulama isteğini Contoso sunucusuna yönlendirir.
- Contoso Yöneticisi, İletişim Hizmetleri'ne
Teams.ManageCalls
veTeams.ManageChats
İletişim Hizmetleri'nden API izinleri ekler. - Contoso Yöneticisi, uygulama için genel istemci akışına izin verir.
- Contoso Yöneticisi, var olan iletişim hizmetlerini oluşturur veya seçer. Bu hizmetler, alışveriş istekleri için kimlik doğrulaması için kullanılır. Microsoft Entra kullanıcı belirteçleri, Teams kullanıcısının erişim belirteciyle değiştirilir. Daha fazla bilgi için bkz . İletişim Hizmetleri kaynaklarını oluşturma ve yönetme.
- Fabrikam Yöneticisi, Contoso uygulamasına İletişim Hizmetleri
Teams.ManageCalls
veTeams.ManageChats
izinleri verir. Yalnızca Fabrikam Yöneticisi veTeams.ManageChats
izinleriyleTeams.ManageCalls
uygulamaya erişim izni verebiliyorsa bu adım gereklidir.
1. Adım: Microsoft Entra uygulaması kaydı oluşturma veya Microsoft Entra uygulaması seçme
Azure İletişim Hizmeti Teams.ManageCalls ve Teams.ManageChats izinleri ile kullanıcıların Microsoft Entra uygulamalarında kimlik doğrulaması yapılmalıdır. Bu hızlı başlangıçta kullanmak istediğiniz mevcut bir uygulamanız yoksa yeni bir uygulama kaydı oluşturabilirsiniz.
Aşağıdaki uygulama ayarları deneyimi etkiler:
- Desteklenen hesap türleri özelliği, uygulamanın tek kiracı ("Yalnızca bu kuruluş dizinindeki hesaplar") mı yoksa çok kiracılı mı ("Herhangi bir kuruluş dizinindeki hesaplar") olduğunu tanımlar. Bu senaryo için çok kiracılı kullanabilirsiniz.
- Yeniden yönlendirme URI'si , kimlik doğrulamasından sonra kimlik doğrulama isteğinin yeniden yönlendirildiği URI'yi tanımlar. Bu senaryo için Genel istemci/yerel (mobil & masaüstü) kullanabilir ve URI olarak girebilirsiniz
http://localhost
.
Daha ayrıntılı bilgi için bkz. Uygulamayı Microsoft kimlik platformu kaydetme.
Uygulama kaydedildiğinde genel bakışta bir tanımlayıcı görürsünüz. Bu tanımlayıcı olan Uygulama (istemci) Kimliği, sonraki adımlarda kullanılır.
2. Adım: Genel istemci akışlarına izin ver
Uygulamanızın Kimlik Doğrulama bölmesinde Genel istemci/yerel (mobil ve masaüstü) için yapılandırılmış bir platform ve yönlendirme URI'si öğesini http://localhostişaret eder. Bölmenin alt kısmında Genel istemci akışlarına izin ver iki durumlu düğme denetimini görürsünüz. Bu hızlı başlangıç için Evet olarak ayarlanmalıdır.
3. Adım: Uygulamaya İletişim Hizmetleri izinlerini ekleme
Uygulamanın Kiracıdaki Teams çağrı özelliklerine erişebilmesi için Teams.ManageCalls ve Teams.ManageChats izinlerini bildirmesi gerekir. Teams kullanıcısı, belirteç değişimi için bu izne sahip bir Microsoft Entra kullanıcı belirteci ister.
- Azure portalında Microsoft Entra uygulamanıza gidin ve API izinleri'ni seçin
- İzin Ekle'yi seçin
- İzin Ekle menüsünde Azure İletişim Hizmetleri
- Teams.ManageCalls ve Teams.ManageChats izinlerini ve ardından İzin ekle'yi seçin
4. Adım: İletişim Hizmetleri kaynağı oluşturma veya seçme
İletişim Hizmetleri kaynağınız, Teams kullanıcısının erişim belirteci için Microsoft Entra kullanıcı belirtecini değiştirmek için tüm isteklerin kimliğini doğrulamak için kullanılır. Bir erişim anahtarıyla kimlik doğrulaması yapabileceğiniz İletişim Hizmetleri Kimlik SDK'sını veya Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak bu değişimi tetikleyebilirsiniz. Erişim anahtarını Azure portalından veya İletişim Hizmetleri kaynağına göre Erişim denetimi (IAM) bölmesinde Azure RBAC'yi yapılandırarak alabilirsiniz.
Yeni bir İletişim Hizmetleri kaynağı oluşturmak istiyorsanız bkz . İletişim Hizmetleri kaynaklarını oluşturma ve yönetme.
5. Adım: Yönetici onayı sağlama
Microsoft Entra kiracısı, uygulamanın Teams.ManageCalls ve Teams.ManageChats izinleri için Microsoft Entra yönetici onayı gerektirecek şekilde yapılandırılabilir. Böyle bir durumda, Microsoft Entra Yöneticisinin İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats için Contoso uygulamasına izin vermesi gerekir. Fabrikam Microsoft Entra Administrator, benzersiz bir URL aracılığıyla onay sağlar.
Aşağıdaki roller bir şirket adına onay verebilir:
- Genel yöneticisi
- Uygulama yöneticisi
- Bulut uygulaması yöneticisi
Azure portalında rolleri denetlemek istiyorsanız bkz . Azure rol atamalarını listeleme.
Yönetici onayı URL'si oluşturmak için Fabrikam Microsoft Entra Administrator aşağıdaki adımları uygular:
- URL'de https://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}, Yönetici {Tenant_ID} yerine Fabrikam Kiracı Kimliği'ni, {Application_ID} öğesini ise Contoso Uygulama Kimliği ile değiştirir.
- Yönetici oturum açar ve kuruluş adına izinler verir.
Onay verilirse Fabrikam kiracısında Contoso uygulamasının hizmet sorumlusu oluşturulur. Fabrikam Yöneticisi, aşağıdaki adımları uygulayarak Microsoft Entra ID'deki onayı gözden geçirebilir:
- Azure portalında yönetici olarak oturum açın.
- Microsoft Entra ID'ye gidin.
- Kurumsal uygulamalar bölmesinde, Uygulama türü filtresini Tüm uygulamalar olarak ayarlayın.
- Uygulamaları filtreleme alanına Contoso uygulamasının adını girin.
- Uygula’yı seçin.
- Gerekli adı kullanarak hizmet sorumlusunu seçin.
- İzinler bölmesine gidin.
İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats izinlerinin durumunun {Directory_name} için Verildiğini görebilirsiniz.
"Uygulama, '{GUID}' kuruluşunuzda hizmet sorumlusu olmayan bir '1fd5118e-2576-4263-8130-9503064c837a'(Azure İletişim Hizmetleri) hizmetine erişmeye çalışıyor. Hizmet aboneliklerinizin yapılandırmasını gözden geçirmek veya gerekli hizmet sorumlusunu oluşturmak için uygulamaya onay vermek için BT Yöneticinize başvurun." Microsoft Entra kiracınızda Azure İletişim Hizmetleri uygulaması için hizmet sorumlusu yok. Bu sorunu çözmek için Kiracınıza bağlanmak için PowerShell'i Microsoft Entra yöneticisi olarak kullanın. değerini Microsoft Entra kiracınızın kimliğiyle değiştirin Tenant_ID
.
Aşağıda gösterildiği gibi Application.ReadWrite.All gerekir.
Connect-MgGraph -TenantId "Tenant_ID" -Scopes Application.ReadWrite.All
Komut bulunamazsa PowerShell'i yönetici olarak başlatın ve Microsoft Graph paketini yükleyin.
Install-Module Microsoft.Graph
Ardından aşağıdaki komutu yürüterek kiracınıza bir hizmet sorumlusu ekleyin. Uygulama Kimliğinin GUID değerini değiştirmeyin.
New-MgServicePrincipal -AppId "1fd5118e-2576-4263-8130-9503064c837a"
Geliştirici eylemleri
Contoso geliştiricisinin kullanıcıların kimliğini doğrulamak için istemci uygulamasını ayarlaması gerekir. Ardından geliştiricinin yeniden yönlendirmeden sonra Microsoft Entra kullanıcı belirtecini işlemek için arka uç sunucusunda bir uç nokta oluşturması gerekir. Microsoft Entra kullanıcı belirteci alındığında, Teams kullanıcısının erişim belirteci ile değiştirilir ve istemci uygulamasına döndürülür.
Geliştiricinin gerekli eylemleri aşağıdaki diyagramda gösterilmiştir:
- Contoso geliştiricisi, Daha önce İletişim Hizmetleri Yöneticisi Teams.ManageCalls ve Teams.ManageChats izinleri tarafından oluşturulan uygulamanın kullanıcı kimliğini doğrulamak için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) yapılandırıyor.
- Contoso geliştiricisi İletişim Hizmetleri Kimlik SDK'sını başlatır ve gelen Microsoft Entra kullanıcı belirtecini kimlik SDK'sı aracılığıyla Teams kullanıcısının erişim belirteci için değiştirir. Daha sonra Teams kullanıcısının erişim belirteci istemci uygulamasına döndürülür.
Geliştiriciler MSAL kullanarak kullanıcıların kimliğini doğrulamak ve güvenli web API'lerine erişmek için Microsoft kimlik platformu uç noktasından Microsoft Entra kullanıcı belirteçleri alabilir. İletişim Hizmetlerine güvenli erişim sağlamak için kullanılabilir. MSAL; .NET, JavaScript, Java, Python, Android ve iOS gibi birçok farklı uygulama mimarisini ve platformunu destekler.
Genel belgelerde ortamları ayarlama hakkında daha fazla bilgi için bkz . Microsoft Kimlik Doğrulama Kitaplığına genel bakış.
Not
Aşağıdaki bölümlerde, konsol uygulaması için Teams kullanıcısının erişim belirteci için Microsoft Entra erişim belirtecinin nasıl değiştirıldığı açıklanmaktadır.
Önkoşulları ayarlama
- İşletim sisteminiz için en son sürüm .NET SDK'sı .
Kodun son hali
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ayarlama
Yeni bir C# uygulaması oluşturma
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı CommunicationAccessTokensQuickstart
yeni bir konsol uygulaması oluşturmak için komutunu kullanındotnet new
. Bu komut, tek bir kaynak dosyayla basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs.
dotnet new console -o CommunicationAccessTokensQuickstart
Dizininizi yeni oluşturulan uygulama klasörüne değiştirin ve komutunu kullanarak dotnet build
uygulamanızı derleyin.
cd CommunicationAccessTokensQuickstart
dotnet build
paketini yükleyin
Uygulama dizinindeyken komutunu kullanarak .NET paketi için Azure İletişim Hizmetleri Kimlik kitaplığını dotnet add package
yükleyin.
dotnet add package Azure.Communication.Identity
dotnet add package Microsoft.Identity.Client
Uygulama çerçevesini ayarlama
Proje dizininden:
- Program.cs dosyasını metin düzenleyicisinde açma
- Ad alanını içerecek
Azure.Communication.Identity
birusing
yönerge ekleme Main
Zaman uyumsuz kodu desteklemek için yöntem bildirimini güncelleştirme
Başlamak için aşağıdaki kodu kullanın:
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. Adım: MSAL kitaplığı aracılığıyla Microsoft Entra kullanıcı belirtecini ve nesne kimliğini alma
Belirteç değişim akışının ilk adımı, Microsoft.Identity.Client kullanarak Teams kullanıcınız için bir belirteç almaktır. Aşağıdaki kod, ve AAD_TENANT_ID
adlı AAD_CLIENT_ID
ortam değişkenlerinden Microsoft Entra istemci kimliğini ve kiracı kimliğini alır. Fabrikam kiracısında bir kullanıcıya karşılık gelen Nesne Kimliği (oid
) talebi alıp değişkeni başlatabilmek için ortam değişkenine dayalı AAD_TENANT_ID
olarak MSAL istemcisini userObjectId
doğru yetkiliyle yapılandırmak önemlidir.
// 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. Adım: CommunicationIdentityClient'ı başlatma
bağlantı dizesi ile bir CommunicationIdentityClient
başlatın. Aşağıdaki kod, adlı COMMUNICATION_SERVICES_CONNECTION_STRING
bir ortam değişkeninden kaynağın bağlantı dizesi alır. Kaynağınızın bağlantı dizesi yönetmeyi öğrenin.
Main
yöntemine aşağıdaki kodu ekleyin:
// 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. Adım: Teams Kullanıcısının Microsoft Entra erişim belirtecini İletişim Kimliği erişim belirteci için değiştirme
GetTokenForTeamsUser
Teams kullanıcısına Azure İletişim Hizmetleri SDK'larla kullanılabilecek bir erişim belirteci vermek için yöntemini kullanın.
var options = new GetTokenForTeamsUserOptions(teamsUserAadToken, appId, userObjectId);
var accessToken = await client.GetTokenForTeamsUserAsync(options);
Console.WriteLine($"Token: {accessToken.Value.Token}");
Kodu çalıştırma
komutunu kullanarak dotnet run
uygulamayı uygulama dizininizden çalıştırın.
dotnet run
Önkoşulları ayarlama
Kodun son hali
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ayarlama
Yeni Node.js Uygulaması oluşturma
Terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
Varsayılan ayarlara sahip bir package.json
dosya oluşturmak için komutunu çalıştırınnpm init -y
.
npm init -y
paketini yükleyin
npm install
JavaScript için Azure İletişim Hizmetleri Kimlik SDK'sını yüklemek için komutunu kullanın.
npm install @azure/communication-identity@latest --save
npm install @azure/msal-node --save
npm install express --save
npm install dotenv --save
seçeneği--save
, kitaplığı package.json dosyanızda bağımlılık olarak listeler.
Uygulama çerçevesini ayarlama
Proje dizininden:
Kod düzenleyicinizde yeni bir metin dosyası açma
Yüklemek için bir
require
çağrı ekleyinCommunicationIdentityClient
Temel özel durum işleme dahil olmak üzere programın yapısını oluşturma
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}!`))
Yeni dosyayı dizininde
access-tokens-quickstart
olduğu gibiissue-communication-access-token.js
kaydedin.
1. Adım: MSAL kitaplığı aracılığıyla Microsoft Entra kullanıcı belirtecini ve nesne kimliğini alma
Belirteç değişim akışının ilk adımı, Microsoft.Identity.Client kullanarak Teams kullanıcınız için bir belirteç almaktır. Aşağıdaki kod, ve AAD_TENANT_ID
adlı AAD_CLIENT_ID
ortam değişkenlerinden Microsoft Entra istemci kimliğini ve kiracı kimliğini alır. Fabrikam kiracısında bir kullanıcıya karşılık gelen Nesne Kimliği (oid
) talebi alıp değişkeni başlatabilmek için ortam değişkenine dayalı AAD_TENANT_ID
olarak MSAL istemcisini userObjectId
doğru yetkiliyle yapılandırmak önemlidir.
// 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. Adım: CommunicationIdentityClient'ı başlatma
bağlantı dizesi ile bir CommunicationIdentityClient
örneği oluşturma. Aşağıdaki kod, adlı COMMUNICATION_SERVICES_CONNECTION_STRING
bir ortam değişkeninden kaynağın bağlantı dizesi alır. Kaynağınızın bağlantı dizesi yönetmeyi öğrenin.
then
yöntemine aşağıdaki kodu ekleyin:
// 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. Adım: Teams Kullanıcısının Microsoft Entra erişim belirtecini İletişim Kimliği erişim belirteci için değiştirme
getTokenForTeamsUser
Teams kullanıcısına Azure İletişim Hizmetleri SDK'larla kullanılabilecek bir erişim belirteci vermek için yöntemini kullanın.
//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);
Kodu çalıştırma
Konsol isteminden issue-communication-access-token.js dosyasını içeren dizine gidin, ardından aşağıdaki node
komutu yürüterek uygulamayı çalıştırın.
node ./issue-communication-access-token.js
Önkoşulları ayarlama
- Python 3.8+.
Kodun son hali
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ayarlama
Yeni Python uygulaması oluşturma
Terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir communication-access-tokens-quickstart && cd communication-access-tokens-quickstart
Proje kök dizininde adlı
exchange-communication-access-tokens.py
bir dosya oluşturmak ve temel özel durum işleme dahil olmak üzere programın yapısını eklemek için bir metin düzenleyicisi kullanın. Bu hızlı başlangıcın tüm kaynak kodunu aşağıdaki bölümlerde bu dosyaya ekleyeceksiniz.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}")
paketini yükleyin
Uygulama dizinindeyken komutunu kullanarak Python paketi için Azure İletişim Hizmetleri Kimlik SDK'sını pip install
yükleyin.
pip install azure-communication-identity
pip install msal
1. Adım: MSAL kitaplığı aracılığıyla Microsoft Entra kullanıcı belirtecini ve nesne kimliğini alma
Belirteç değişim akışının ilk adımı, Microsoft.Identity.Client kullanarak Teams kullanıcınız için bir belirteç almaktır. Azure portalında , "Mobil ve Masaüstü uygulamanızın" Yeniden Yönlendirme URI'sini olarak http://localhost
yapılandırın. Aşağıdaki kod, ve AAD_TENANT_ID
adlı AAD_CLIENT_ID
ortam değişkenlerinden Microsoft Entra istemci kimliğini ve kiracı kimliğini alır. Fabrikam kiracısında bir kullanıcıya karşılık gelen Nesne Kimliği (oid
) talebi alıp değişkeni başlatabilmek için ortam değişkenine dayalı AAD_TENANT_ID
olarak MSAL istemcisini user_object_id
doğru yetkiliyle yapılandırmak önemlidir.
# 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. Adım: CommunicationIdentityClient'ı başlatma
bağlantı dizesi ile bir CommunicationIdentityClient
örneği oluşturma. Aşağıdaki kod, adlı COMMUNICATION_SERVICES_CONNECTION_STRING
bir ortam değişkeninden kaynağın bağlantı dizesi alır. Kaynağınızın bağlantı dizesi yönetmeyi öğrenin.
Bu kodu bloğun try
içine ekleyin:
# 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. Adım: Teams Kullanıcısının Microsoft Entra erişim belirtecini İletişim Kimliği erişim belirteci için değiştirme
get_token_for_teams_user
Teams kullanıcısına Azure İletişim Hizmetleri SDK'larla kullanılabilecek bir erişim belirteci vermek için yöntemini kullanın.
# 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)
Kodu çalıştırma
Konsol isteminden exchange-teams-access-tokens.py dosyasını içeren dizine gidin, ardından aşağıdaki python
komutu yürüterek uygulamayı çalıştırın.
python ./exchange-communication-access-tokens.py
Önkoşulları ayarlama
- Java Development Kit (JDK) sürüm 8 veya üzeri.
- Apache Maven.
Kodun son hali
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ayarlama
Yeni java uygulaması oluşturma
Terminalinizi veya komut pencerenizi açın. Java uygulamanızı oluşturmak istediğiniz dizine gidin. Şablondan maven-archetype-quickstart
Java projesi oluşturmak için aşağıdaki komutu çalıştırın.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
'Oluştur' görevinin ile aynı ada artifactId
sahip bir dizin oluşturduğunu göreceksiniz. Bu dizin altında src/main/java
, dizin proje kaynak kodunu içerir, src/test/java directory
test kaynağını içerir ve pom.xml
dosya projenin Proje Nesne Modeli veya POM'dir.
paketini yükleyin
pom.xml
Dosyayı metin düzenleyicinizde açın. Bağımlılık grubuna aşağıdaki bağımlılık öğelerini ekleyin.
<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>
Uygulama çerçevesini ayarlama
Proje dizininden:
/src/main/java/com/communication/quickstart
dizinine gidinApp.java
Dosyayı düzenleyicinizde açma- deyimini
System.out.println("Hello world!");
değiştirme - Yönerge ekleme
import
Başlamak için aşağıdaki kodu kullanın:
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. Adım: MSAL kitaplığı aracılığıyla Microsoft Entra kullanıcı belirtecini ve nesne kimliğini alma
Belirteç değişim akışının ilk adımı, Microsoft.Identity.Client kullanarak Teams kullanıcınız için bir belirteç almaktır. MSAL istemcisini değişkeni temel alarak tenantId
doğru yetkiliyle yapılandırmak, Fabrikam kiracısında bir kullanıcıya karşılık gelen Nesne Kimliği (oid
) talebi almak ve değişkeni başlatmak userObjectId
için gereklidir.
// 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. Adım: CommunicationIdentityClient'ı başlatma
Kaynağınızın erişim anahtarı ve uç noktasıyla örneği CommunicationIdentityClient
oluşturun. Kaynağınızın bağlantı dizesi yönetmeyi öğrenin. Ayrıca, arabirimini uygulayan herhangi bir özel HTTP istemcisiyle istemciyi com.azure.core.http.HttpClient
başlatabilirsiniz.
main
yöntemine aşağıdaki kodu ekleyin:
//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. Adım: Teams Kullanıcısının Microsoft Entra erişim belirtecini İletişim Kimliği erişim belirteci için değiştirme
getTokenForTeamsUser
Teams kullanıcısına Azure İletişim Hizmetleri SDK'larla kullanılabilecek bir erişim belirteci vermek için yöntemini kullanın.
// 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());
Kodu çalıştırma
Dosyasını içeren pom.xml
dizine gidin ve komutunu kullanarak projeyi derleyin mvn compile
.
Ardından paketi derleyin.
mvn package
Uygulamayı yürütmek için aşağıdaki mvn
komutu çalıştırın.
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
Kullanıcı eylemleri
Kullanıcı, Contoso uygulamasının Fabrikam kullanıcılarını temsil eder. Kullanıcı deneyimi aşağıdaki diyagramda gösterilmiştir:
- Fabrikam kullanıcısı Contoso istemci uygulamasını kullanır ve kimlik doğrulaması istenir.
- Contoso istemci uygulaması , İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats izinleri ile Contoso uygulaması için Fabrikam Microsoft Entra kiracısına karşı kullanıcının kimliğini doğrulamak için MSAL kullanır.
- Kimlik doğrulaması, MSAL ve Contoso uygulamasındaki Yeniden Yönlendirme URI'sinde tanımlandığı gibi sunucuya yönlendirilir.
- Contoso sunucusu, İletişim Hizmetleri Kimlik SDK'sını kullanarak Teams kullanıcısının erişim belirteci için Microsoft Entra kullanıcı belirtecini değiştirir ve Teams kullanıcısının erişim belirtecini istemci uygulamasına döndürür.
İstemci uygulamasında Teams kullanıcısı için geçerli bir erişim belirteci ile geliştiriciler İletişim Hizmetleri Arama SDK'sını tümleştirebilir ve teams kullanıcısı olarak aramaları yönetebilir.
Sonraki adımlar
Bu hızlı başlangıçta şunları öğrendiniz:
- Microsoft Entra Id'de bir uygulama oluşturun ve yapılandırın.
- Bir Microsoft Entra kullanıcı belirteci vermek için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) kullanın.
- Teams kullanıcısının erişim belirteci için Microsoft Entra kullanıcı belirtecini değiştirmek için İletişim Hizmetleri Kimlik SDK'sını kullanın.
Teams kullanıcılarıiçin güvenilir kimlik doğrulama hizmeti oluşturma Teams kullanıcısı olarak Teams kullanıcısı olarak arama yapma
Aşağıdaki kavramlar hakkında bilgi edinin:
- Teams kullanıcısı olarak iletişim için kullanım örnekleri
- Teams kimliklerini Azure İletişim Hizmetleri destekleme
- Teams birlikte çalışabilirliği
- Teams kullanıcıları için tek kiracılı ve çok kiracılı kimlik doğrulaması
- Tek sayfalı bir uygulamada (SPA) Teams kullanıcıları için iletişim erişim belirteçleri oluşturma ve yönetme