Aracılığıyla paylaş


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

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

Yönetici istrator 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önetici istrator'lar tarafından yürütülmesi gereken tüm eylemleri görebilirsiniz.

Teams kimlikleri için Azure İletişim Hizmetleri desteği etkinleştirmek için Yönetici istrator eylemleri.

  1. Contoso Yönetici istrator, 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.
  2. Contoso Yönetici istrator, İletişim Hizmetleri'ne Teams.ManageCalls ve Teams.ManageChats İletişim Hizmetleri'nden API izinleri ekler.
  3. Contoso Yönetici istrator, uygulama için genel istemci akışına izin verir.
  4. Contoso Yönetici istrator, 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.
  5. Fabrikam Yönetici istrator, Contoso uygulamasına İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats izinleri verir. Yalnızca Fabrikam Yönetici istrator ve Teams.ManageChats izinleriyle Teams.ManageCalls uygulamaya erişim 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 girebilirsinizhttp://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.

  1. Azure portalında Microsoft Entra uygulamanıza gidin ve API izinleri'ni seçin
  2. İzin Ekle'yi seçin
  3. İzin Ekle menüsünde Azure İletişim Hizmetleri
  4. Teams.ManageCalls ve Teams.ManageChats izinlerini ve ardından İzin ekle'yi seçin

Önceki adımda oluşturulan Microsoft Entra uygulamasına Teams.ManageCalls ve Teams.ManageChats izni ekleyin.

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.

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önetici istrator, İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats için Contoso uygulamasına izin vermelidir. Fabrikam Microsoft Entra Yönetici istrator, 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 istrator onay URL'si oluşturmak için Fabrikam Microsoft Entra Yönetici istrator aşağıdaki adımları uygular:

  1. URL'sindehttps://login.microsoftonline.com/{Tenant_ID}/adminconsent?client_id={Application_ID}, Yönetici istrator {Tenant_ID} yerine Fabrikam Kiracı Kimliği'ni, {Application_ID} öğesini ise Contoso Uygulama Kimliği ile değiştirir.
  2. Yönetici istrator 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önetici istrator, aşağıdaki adımları uygulayarak Microsoft Entra ID'deki onayı gözden geçirebilir:

  1. Azure portalında yönetici olarak oturum açın.
  2. Microsoft Entra ID'ye gidin.
  3. Kurumsal uygulamalar bölmesinde, Uygulama türü filtresini Tüm uygulamalar olarak ayarlayın.
  4. Uygulamaları filtreleme alanına Contoso uygulamasının adını girin.
  5. Uygula’yı seçin.
  6. Gerekli adı kullanarak hizmet sorumlusunu seçin.
  7. İ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 için BT Yönetici başvurun veya gerekli hizmet sorumlusunu oluşturmak için uygulamaya onay verin." 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.

Uygulama Okuma Tümünü Yaz'ın gösterildiği ekran görüntüsü.

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:

Teams kimlikleri için Azure İletişim Hizmetleri desteği sağlayan geliştirici eylemlerinin diyagramı.

  1. Contoso geliştiricisi, Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL), İletişim Hizmetleri Teams.ManageCalls ve Teams.ManageChats izinleri için Yönetici istrator tarafından daha önce oluşturulan uygulama için kullanıcının kimliğini doğrulamak üzere yapılandırmıştır.
  2. 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

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ı CommunicationAccessTokensQuickstartyeni 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:

  1. Program.cs dosyasını metin düzenleyicisinde açma
  2. Ad alanını içerecek Azure.Communication.Identity bir using yönerge ekleme
  3. 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_IDadlı 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_STRINGbir 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

  • Etkin LTS ve Bakım LTS sürümlerini Node.js (8.11.1 ve 10.14.1 önerilir).

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:

  1. Kod düzenleyicinizde yeni bir metin dosyası açma

  2. Yüklemek için bir require çağrı ekleyin CommunicationIdentityClient

  3. 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}!`))
    
    
  4. Yeni dosyayı dizininde access-tokens-quickstart olduğu gibi issue-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_IDadlı 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_STRINGbir 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

Kodun son hali

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ayarlama

Yeni Python uygulaması oluşturma

  1. 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
    
  2. 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://localhostyapılandırın. Aşağıdaki kod, ve AAD_TENANT_IDadlı 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_STRINGbir 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

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

  1. /src/main/java/com/communication/quickstart dizinine gidin
  2. App.java Dosyayı düzenleyicinizde açma
  3. deyimini System.out.println("Hello world!"); değiştirme
  4. 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:

Teams kimlikleri için Azure İletişim Hizmetleri desteği etkinleştirmeye yönelik kullanıcı eylemlerinin diyagramı.

  1. Fabrikam kullanıcısı Contoso istemci uygulamasını kullanır ve kimlik doğrulaması istenir.
  2. 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.
  3. Kimlik doğrulaması, MSAL ve Contoso uygulamasındaki Yeniden Yönlendirme URI'sinde tanımlandığı gibi sunucuya yönlendirilir.
  4. 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.

Aşağıdaki kavramlar hakkında bilgi edinin: