Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zjistěte, jak získat přístup k Microsoft Graphu z webové aplikace spuštěné ve službě Aplikace Azure Service.
Chcete použít 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.
Požadavky
- Webová aplikace spuštěná ve službě Aplikace Azure, která má povolený modul ověřování/autorizace služby App Service.
Zapnutí 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. Následující skript přidá 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. Podokno zobrazuje všechny zástupce služby ve vašem tenantovi. Přidejte filtr pro "Typ aplikace == Spravované identity" a vyberte služební objekt pro spravovanou identitu.
Pokud sledujete tento kurz, existují dva instanční objekty se stejným zobrazovaným názvem (například SecureWebApp202009413531). Služební principál, který má adresu URL domovské stránky, představuje webovou aplikaci ve vašem tenantu. Služební hlavní objekt, který se objeví ve Spravovaných identitách, by neměl mít uvedenou URL domovské stránky a ID objektu by se mělo shodovat s hodnotou ID objektu spravované identity v předchozím kroku.
Vyberte principál služby pro spravovanou identitu.
V přehledu vyberte Oprávnění a zobrazí se přidaná oprávnění pro Microsoft Graph.
Volejte Microsoft Graph
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á oprávnění ověřeného tokenu a poté je použije k vytvoření objektu klienta služby, který následně získá uživatele ve skupině.
Pokud chcete tento kód zobrazit jako součást ukázkové aplikace, podívejte se na ukázku na GitHubu.
Instalace balíčku klientské knihovny Microsoft.Identity.Web.GraphServiceClient
Nainstalujte balíčky NuGet Microsoft.Graph a Microsoft.Identity.Web.GraphServiceClient ve vašem projektu pomocí rozhraní příkazového řádku .NET (CLI) nebo konzoly Správce balíčků v prostředí Visual Studio.
.NET CLI
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.GraphServiceClient
dotnet add package Microsoft.Graph
Konzola Správce balíčků
Otevřete projekt nebo řešení ve Visual Studiu a konzolu otevřete pomocí příkazu Nástroje>Správce balíčků Konzola.
Spusťte příkazy instalace.
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Graph
Příklad
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.