Oktatóanyag: A Microsoft Graph elérése biztonságos .NET-alkalmazásból alkalmazásként

Megtudhatja, hogyan érheti el a Microsoft Graphot egy Azure-alkalmazás Service-en futó webalkalmazásból.

Diagram that shows accessing Microsoft Graph.

A Microsoft Graphot szeretné meghívni a webalkalmazáshoz. A webalkalmazás biztonságosan hozzáférhet az adatokhoz, ha egy rendszer által hozzárendelt felügyelt identitást használ. A Microsoft Entra-azonosítóból származó felügyelt identitás lehetővé teszi, hogy az App Service szerepköralapú hozzáférés-vezérléssel (RBAC) férhessen hozzá az erőforrásokhoz alkalmazás hitelesítő adatainak megkövetelése nélkül. Miután hozzárendelt egy felügyelt identitást a webalkalmazáshoz, az Azure gondoskodik a tanúsítványok létrehozásáról és terjesztéséről. Nem kell aggódnia a titkos kódok vagy az alkalmazás hitelesítő adatainak kezelése miatt.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Rendszer által hozzárendelt felügyelt identitás létrehozása webalkalmazásban.
  • Microsoft Graph API-engedélyek hozzáadása felügyelt identitáshoz.
  • A Microsoft Graph meghívása webalkalmazásból felügyelt identitások használatával.

If you don't have an Azure subscription, create an Azure free account before you begin.

Előfeltételek

  • A Azure-alkalmazás Service-en futó webalkalmazás, amelyen engedélyezve van az App Service hitelesítési/engedélyezési modulja.

Felügyelt identitás engedélyezése az alkalmazásban

Ha a webalkalmazást a Visual Studióban hozza létre és teszi közzé, a felügyelt identitás engedélyezve lett az alkalmazásban.

  1. Az app service-ben válassza az Identitás lehetőséget a bal oldali panelen, majd válassza a Hozzárendelt rendszer lehetőséget.

  2. Ellenőrizze, hogy az állapot be van-e kapcsolva. Ha nem, válassza a Mentés , majd az Igen lehetőséget a rendszer által hozzárendelt felügyelt identitás engedélyezéséhez. Ha a felügyelt identitás engedélyezve van, az állapot Be értékre van állítva, és az objektumazonosító elérhető.

  3. Jegyezze fel az objektumazonosító értékét, amelyre a következő lépésben szüksége lesz.

Screenshot that shows the system-assigned identity.

Hozzáférés biztosítása a Microsoft Graphhoz

A Microsoft Graph elérésekor a felügyelt identitásnak megfelelő engedélyekkel kell rendelkeznie a végrehajtani kívánt művelethez. Jelenleg nincs lehetőség ilyen engedélyek hozzárendelésére a Microsoft Entra felügyeleti központban.

  1. Futtassa a következő szkriptet a kért Microsoft Graph API-engedélyek hozzáadásához a felügyelt identitásszolgáltatás egyszerű objektumához.

    # 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. A szkript végrehajtása után a Microsoft Entra felügyeleti központban ellenőrizheti, hogy a kért API-engedélyek hozzá vannak-e rendelve a felügyelt identitáshoz.

  3. Nyissa meg az Alkalmazások lehetőséget, majd válassza a Vállalati alkalmazások lehetőséget. Ez a panel megjeleníti a bérlő összes szolgáltatásnevét. Adjon hozzá egy szűrőt az "Application type==Managed Identityes" kifejezéshez, és válassza ki a felügyelt identitás szolgáltatásnevét.

    Ha ezt az oktatóanyagot követi, két azonos megjelenítendő névvel rendelkező szolgáltatásnév található (például SecureWebApp2020094113531). A kezdőlap URL-címével rendelkező szolgáltatásnév a bérlőben lévő webalkalmazást jelöli. A felügyelt identitásokban megjelenő szolgáltatásnév nem rendelkezhet kezdőlap URL-címével, és az objektumazonosítónak meg kell egyeznie a felügyelt identitás előző lépésben megadott objektumazonosító-értékével.

  4. Válassza ki a felügyelt identitás szolgáltatásnevét.

    Screenshot that shows the All applications option.

  5. Az Áttekintés területen válassza az Engedélyek lehetőséget, és látni fogja a Microsoft Graphhoz hozzáadott engedélyeket.

    Screenshot that shows the Permissions pane.

A Microsoft Graph meghívása

A ChainedTokenCredential, ManagedIdentityCredential és EnvironmentCredential osztályokkal jogkivonat-hitelesítő adatokat kap a kódhoz a Microsoft Graph felé irányuló kérelmek engedélyezéséhez. Hozza létre a ChainedTokenCredential osztály egy példányát, amely a felügyelt identitást használja az App Service-környezetben vagy a fejlesztési környezeti változókban a jogkivonatok lekéréséhez és a szolgáltatásügyfélhez való csatolásához. Az alábbi példakód lekéri a hitelesített jogkivonat hitelesítő adatait, és egy szolgáltatásügyfél-objektum létrehozásához használja, amely beolvasja a csoport felhasználóit.

Ha ezt a kódot egy mintaalkalmazás részeként szeretné megtekinteni, tekintse meg a következőt:

A Microsoft.Identity.Web.MicrosoftGraph ügyféloldali kódtárcsomag telepítése

Telepítse a Microsoft.Identity.Web.MicrosoftGraph NuGet-csomagot a projektbe a .NET Core parancssori felületével vagy a Visual Studio Csomagkezelő konzoljával.

.NET Core parancssor

Nyisson meg egy parancssort, és váltson a projektfájlt tartalmazó könyvtárra.

Futtassa a telepítési parancsokat.

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

Package Manager konzol

Nyissa meg a projektet/megoldást a Visual Studióban, és nyissa meg a konzolt a Tools>NuGet Csomagkezelő> Csomagkezelő Console paranccsal.

Futtassa a telepítési parancsokat.

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

.NET-példa

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;
}

Clean up resources

Ha befejezte ezt az oktatóanyagot, és már nincs szüksége a webalkalmazásra vagy a kapcsolódó erőforrásokra, törölje a létrehozott erőforrásokat.

Az erőforráscsoport törlése

Az Azure Portalon válassza ki az Erőforráscsoportokat a portál menüjéből, és válassza ki azt az erőforráscsoportot, amely tartalmazza az App Service- és App Service-csomagot.

Az erőforráscsoport és az összes erőforrás törléséhez válassza az Erőforráscsoport törlése lehetőséget.

Screenshot that shows deleting the resource group.

A parancs futtatása több percet is igénybe vehet.

Következő lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • Rendszer által hozzárendelt felügyelt identitás létrehozása webalkalmazásban.
  • Microsoft Graph API-engedélyek hozzáadása felügyelt identitáshoz.
  • A Microsoft Graph meghívása webalkalmazásból felügyelt identitások használatával.

Megtudhatja, hogyan csatlakoztathat egy .NET Core-alkalmazást, Python-alkalmazást, Java-alkalmazást vagy Node.js-alkalmazást egy adatbázishoz.