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.
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.
Ve službě App Service vyberte v levém podokně Identita a pak vyberte Systém přiřazený.
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.
Poznamenejte si hodnotu ID objektu, kterou budete potřebovat v dalším kroku.
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.
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 = "aaaabbbb-0000-cccc-1111-dddd2222eeee" # 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
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ě.
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.
Vyberte instanční objekt pro spravovanou identitu.
V přehledu vyberte Oprávnění a zobrazí se přidaná oprávnění pro Microsoft Graph.
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.
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.