Kurz: Přístup k Microsoft Graphu ze zabezpečené aplikace .NET jako aplikace

Zjistěte, jak získat přístup k Microsoft Graphu z webové aplikace spuštěné ve službě Aplikace Azure Service.

Diagram that shows accessing Microsoft Graph.

Chcete volat Microsoft Graph pro webovou aplikaci. Bezpečným způsobem, jak webové aplikaci udělit přístup k datům, je použití spravované identity přiřazené systémem. Spravovaná identita z Microsoft Entra ID umožňuje službě App Service přístup k prostředkům prostřednictvím řízení přístupu na základě role (RBAC) bez vyžadování přihlašovacích údajů aplikace. Po přiřazení spravované identity k webové aplikaci se Azure postará o vytvoření a distribuci certifikátu. Nemusíte se starat o správu tajných kódů nebo přihlašovacích údajů aplikace.

V tomto kurzu se naučíte:

  • Vytvořte spravovanou identitu přiřazenou systémem ve webové aplikaci.
  • Přidání oprávnění rozhraní Microsoft Graph API ke spravované identitě
  • Volání Microsoft Graphu z webové aplikace pomocí spravovaných identit

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Předpoklady

  • Webová aplikace spuštěná ve službě Aplikace Azure, která má povolený modul ověřování/autorizace služby App Service.

Povolení spravované identity v aplikaci

Pokud webovou aplikaci vytvoříte a publikujete prostřednictvím sady Visual Studio, spravovaná identita byla ve vaší aplikaci povolená za vás.

  1. Ve službě App Service vyberte v levém podokně Identita a pak vyberte Systém přiřazený.

  2. Ověřte, že je stav nastavený na Zapnuto. Pokud ne, vyberte Uložit a potom vyberte Ano a povolte spravovanou identitu přiřazenou systémem. Pokud je spravovaná identita povolená, stav je nastavený na Zapnuto a ID objektu je k dispozici.

  3. Poznamenejte si hodnotu ID objektu, kterou budete potřebovat v dalším kroku.

Screenshot that shows the system-assigned identity.

Udělení přístupu k Microsoft Graphu

Při přístupu k Microsoft Graphu musí mít spravovaná identita správná oprávnění pro operaci, kterou chce provést. V současné době není možné tato oprávnění přiřazovat prostřednictvím Centra pro správu Microsoft Entra.

  1. Spuštěním následujícího skriptu přidejte požadovaná oprávnění rozhraní Microsoft Graph API k objektu instančního objektu spravované identity.

    # Install the module.
    # Install-Module Microsoft.Graph -Scope CurrentUser
    
    # The tenant ID
    $TenantId = "11111111-1111-1111-1111-111111111111"
    
    # The name of your web app, which has a managed identity.
    $webAppName = "SecureWebApp-20201106120003" 
    $resourceGroupName = "SecureWebApp-20201106120003ResourceGroup"
    
    # The name of the app role that the managed identity should be assigned to.
    $appRoleName = "User.Read.All"
    
    # Get the web app's managed identity's object ID.
    Connect-AzAccount -Tenant $TenantId
    $managedIdentityObjectId = (Get-AzWebApp -ResourceGroupName $resourceGroupName -Name $webAppName).identity.principalid
    
    Connect-MgGraph -TenantId $TenantId -Scopes 'Application.Read.All','AppRoleAssignment.ReadWrite.All'
    
    # Get Microsoft Graph app's service principal and app role.
    $serverApplicationName = "Microsoft Graph"
    $serverServicePrincipal = (Get-MgServicePrincipal -Filter "DisplayName eq '$serverApplicationName'")
    $serverServicePrincipalObjectId = $serverServicePrincipal.Id
    
    $appRoleId = ($serverServicePrincipal.AppRoles | Where-Object {$_.Value -eq $appRoleName }).Id
    
    # Assign the managed identity access to the app role.
    New-MgServicePrincipalAppRoleAssignment `
        -ServicePrincipalId $managedIdentityObjectId `
        -PrincipalId $managedIdentityObjectId `
        -ResourceId $serverServicePrincipalObjectId `
        -AppRoleId $appRoleId
    
  2. Po spuštění skriptu můžete ověřit v Centru pro správu Microsoft Entra, jestli jsou požadovaná oprávnění rozhraní API přiřazená spravované identitě.

  3. Přejděte na Aplikace a pak vyberte Podnikové aplikace. V tomto podokně se zobrazí všechny instanční objekty ve vašem tenantovi. Přidejte filtr pro "Typ aplikace==Spravované identity" a vyberte instanční objekt pro spravovanou identitu.

    Pokud sledujete tento kurz, existují dva instanční objekty se stejným zobrazovaným názvem (například SecureWebApp202009413531). Instanční objekt, který má adresu URL domovské stránky, představuje webovou aplikaci ve vašem tenantovi. Instanční objekt, který se zobrazí ve spravovaných identitách, by neměl mít uvedenou adresu URL domovské stránky a ID objektu by se mělo shodovat s hodnotou ID objektu spravované identity v předchozím kroku.

  4. Vyberte instanční objekt pro spravovanou identitu.

    Screenshot that shows the All applications option.

  5. V přehledu vyberte Oprávnění a zobrazí se přidaná oprávnění pro Microsoft Graph.

    Screenshot that shows the Permissions pane.

Volání Microsoft Graphu

Třídy ChainedTokenCredential, ManagedIdentityCredential a EnvironmentCredential slouží k získání přihlašovacích údajů tokenu pro kód k autorizaci požadavků na Microsoft Graph. Vytvořte instanci ChainedTokenCredential třídy, která používá spravovanou identitu v prostředí App Service nebo proměnné vývojového prostředí k načtení tokenů a jejich připojení k klientovi služby. Následující příklad kódu získá přihlašovací údaje ověřeného tokenu a použije ho k vytvoření objektu klienta služby, který získá uživatele ve skupině.

Pokud chcete tento kód zobrazit jako součást ukázkové aplikace, podívejte se na:

Instalace balíčku klientské knihovny Microsoft.Identity.Web.MicrosoftGraph

Nainstalujte balíček NuGet Microsoft.Identity.Web.MicrosoftGraph v projektu pomocí rozhraní příkazového řádku .NET Core nebo konzoly Správce balíčků v sadě Visual Studio.

Příkazový řádek .NET Core

Otevřete příkazový řádek a přepněte do adresáře, který obsahuje váš soubor projektu.

Spusťte příkazy instalace.

dotnet add package Microsoft.Identity.Web.MicrosoftGraph
dotnet add package Microsoft.Graph

Konzola Správce balíčků

Otevřete projekt nebo řešení v sadě Visual Studio a otevřete konzolu pomocí příkazu Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.

Spusťte příkazy instalace.

Install-Package Microsoft.Identity.Web.MicrosoftGraph
Install-Package Microsoft.Graph

Příklad .NET

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
using Microsoft.Graph;
using Azure.Identity;

...

public IList<MSGraphUser> Users { get; set; }

public async Task OnGetAsync()
{
    // Create the Graph service client with a ChainedTokenCredential which gets an access
    // token using the available Managed Identity or environment variables if running
    // in development.
    var credential = new ChainedTokenCredential(
        new ManagedIdentityCredential(),
        new EnvironmentCredential());

    string[] scopes = new[] { "https://graph.microsoft.com/.default" };

    var graphServiceClient = new GraphServiceClient(
        credential, scopes);

    List<MSGraphUser> msGraphUsers = new List<MSGraphUser>();
    try
    {
        //var users = await graphServiceClient.Users.Request().GetAsync();
        var users = await graphServiceClient.Users.GetAsync();
        foreach (var u in users.Value)
        {
            MSGraphUser user = new MSGraphUser();
            user.userPrincipalName = u.UserPrincipalName;
            user.displayName = u.DisplayName;
            user.mail = u.Mail;
            user.jobTitle = u.JobTitle;

            msGraphUsers.Add(user);
        }
    }
    catch (Exception ex)
    {
        string msg = ex.Message;
    }

    Users = msGraphUsers;
}

Vyčištění prostředků

Pokud jste dokončili tento kurz a už nepotřebujete webovou aplikaci nebo přidružené prostředky, vyčistěte prostředky, které jste vytvořili.

Odstranění skupiny prostředků

Na webu Azure Portal vyberte v nabídce portálu skupiny prostředků a vyberte skupinu prostředků, která obsahuje vaši službu App Service a plán služby App Service.

Výběrem možnosti Odstranit skupinu prostředků odstraňte skupinu prostředků a všechny prostředky.

Screenshot that shows deleting the resource group.

Spuštění tohoto příkazu může trvat několik minut.

Další kroky

V tomto kurzu jste se naučili, jak:

  • Vytvořte spravovanou identitu přiřazenou systémem ve webové aplikaci.
  • Přidání oprávnění rozhraní Microsoft Graph API ke spravované identitě
  • Volání Microsoft Graphu z webové aplikace pomocí spravovaných identit

Zjistěte, jak připojit aplikaci .NET Core, aplikaci v Pythonu, aplikaci v Javě nebo aplikaci Node.js k databázi.