Kurz: Přístup k Microsoft Graph ze zabezpečené javascriptové aplikace jako uživatel

Zjistěte, jak získat přístup k Microsoft Graph z webové aplikace spuštěné na Azure App Service.

Diagram zobrazující přístup k Microsoft Graph.

Chcete přidat přístup k Microsoft Graph z webové aplikace a provést nějakou akci jako přihlášený uživatel. Tato část popisuje, jak udělit delegovaná oprávnění webové aplikaci a získat informace o profilu přihlášeného uživatele z Microsoft Entra ID.

V tomto kurzu se naučíte:

  • Udělte delegovaná oprávnění webové aplikaci.
  • Zavolejte Microsoft Graph z webové aplikace pro přihlášeného uživatele

Pokud účet Azure nemáte, vytvořte si účet free než začnete.

Požadavky

  • Webová aplikace spuštěná na Azure App Service s povoleným modulem ověřování/autorizace službyApp Service .

Poskytnout přístup uživatelského rozhraní pro použití Microsoft Graph

Po povolení ověřování a autorizace ve webové aplikaci se webová aplikace zaregistruje na platformě Microsoft Identity Platform a je podporovaná aplikací Microsoft Entra. V tomto kroku udělíte webové aplikaci oprávnění pro přístup k Microsoft Graph pro uživatele.

Note

Technicky vzato poskytnete aplikaci Microsoft Entra ve webové aplikaci oprávnění pro přístup k aplikaci Microsoft Graph od Microsoft Entra jménem uživatele.

  1. V Microsoft Entra admin center vyberte Entra ID.

  2. Vyberte App registrations>Vlastněné aplikace>Zobrazit všechny aplikace v tomto adresáři. Vyberte název webové aplikace a pak vyberte oprávnění rozhraní API.

  3. Vyberte Přidat oprávnění a pak vyberte rozhraní MICROSOFT API a pak Microsoft Graph.

  4. Vyberte Delegovaná oprávnění a pak v seznamu vyberte User.Read . Vyberte Přidat oprávnění.

Konfigurace služby App Service tak, aby vracela použitelný přístupový token

Webová aplikace teď má požadovaná oprávnění pro přístup k Microsoft Graph jako přihlášený uživatel. V této části nakonfigurujete ověřování a autorizaci služby App Service, abyste získali použitelný přístupový token pro přístup k Microsoft Graphu. V tomto kroku je potřeba přidat User.Read obor podřízené služby (Microsoft Graph): https://graph.microsoft.com/User.Read.

Důležité

Pokud službu App Service nenakonfigurujete tak, aby vracela použitelný přístupový token, při volání rozhraní API Microsoft Graph v kódu se zobrazí chyba CompactToken parsing failed with error code: 80049217.

Přejděte na Azure Resource Explorer a pomocí stromu prostředků vyhledejte webovou aplikaci. Adresa URL prostředku by měla být podobná https://management.azure.com/subscriptions/subscriptionId/resourceGroups/SecureWebApp/providers/Microsoft.Web/sites/SecureWebApp20200915115914.

Průzkumník prostředků Azure se teď otevře s webovou aplikací vybranou ve stromu prostředků.

  1. V horní části stránky vyberte Edit a povolte úpravy prostředků Azure.

  2. V levém prohlížeči navigujte k config>authsettingsV2.

  3. V zobrazení authsettingsV2 vyberte Upravit.

  4. Vyhledejte sekci přihlášení v identityProviders>azureActiveDirectory a přidejte následující nastavení loginParameters: "loginParameters":[ "response_type=code id_token","scope=openid offline_access profile https://graph.microsoft.com/User.Read" ].

    "identityProviders": {
        "azureActiveDirectory": {
          "enabled": true,
          "login": {
            "loginParameters":[
              "response_type=code id_token",
              "scope=openid offline_access profile https://graph.microsoft.com/User.Read"
            ]
          }
        }
      }
    },
    
  5. Nastavení uložte tak, že vyberete PUT.

Toto nastavení může trvat několik minut, než se projeví. Vaše webová aplikace je teď nakonfigurovaná tak, aby měla přístup k Microsoft Graph se správným přístupovým tokenem. Pokud ne, Microsoft Graph vrátí chybu s informací, že formát kompaktního tokenu je nesprávný.

Volání služby Microsoft Graph z Node.js

Vaše webová aplikace teď má požadovaná oprávnění. Přidá také ID klienta Microsoft Graphu do parametrů přihlášení.

Instalace balíčků klientské knihovny

Nainstalujte do projektu balíčky npm @azure/identity a @microsoft/microsoft-graph-client.

npm install @microsoft/microsoft-graph-client

Konfigurace ověřovacích informací

Vytvořte objekt pro uložení nastavení ověřování:

// partial code in app.js
const appSettings = {
    appCredentials: {
        clientId: process.env.WEBSITE_AUTH_CLIENT_ID, // Enter the client Id here,
        tenantId: "common", // Enter the tenant info here,
        clientSecret: process.env.MICROSOFT_PROVIDER_AUTHENTICATION_SECRET // Enter the client secret here,
    },
    authRoutes: {
        redirect: "/.auth/login/aad/callback", // Enter the redirect URI here
        error: "/error", // enter the relative path to error handling route
        unauthorized: "/unauthorized" // enter the relative path to unauthorized route
    },
    protectedResources: {
        graphAPI: {
            endpoint: "https://graph.microsoft.com/v1.0/me", // resource endpoint
            scopes: ["User.Read"] // resource scopes
        },
    },
}

Volání Microsoft Graph jménem uživatele

Následující kód ukazuje, jak volat kontroler Microsoft Graph jako aplikaci a získat nějaké informace o uživateli.

// controllers/graphController.js

// get the name of the app service instance from environment variables
const appServiceName = process.env.WEBSITE_SITE_NAME;

const graphHelper = require('../utils/graphHelper');

exports.getProfilePage = async(req, res, next) => {

    try {
        // get user's access token scoped to Microsoft Graph from session
        // use token to create Graph client
        const graphClient = graphHelper.getAuthenticatedClient(req.session.protectedResources["graphAPI"].accessToken);

        // return user's profile
        const profile = await graphClient
            .api('/me')
            .get();

        res.render('profile', { isAuthenticated: req.session.isAuthenticated, profile: profile, appServiceName: appServiceName });   
    } catch (error) {
        next(error);
    }
}

Předchozí kód spoléhá na následující funkci getAuthenticatedClient k vrácení klienta Microsoft Graph.

// utils/graphHelper.js

const graph = require('@microsoft/microsoft-graph-client');

getAuthenticatedClient = (accessToken) => {
    // Initialize Graph client
    const client = graph.Client.init({
        // Use the provided access token to authenticate requests
        authProvider: (done) => {
            done(null, accessToken);
        }
    });

    return client;
}

Uvolnit zdroje

Pokud jste dokončili všechny kroky v tomto kurzu s více částmi, vytvořili jste službu App Service, plán hostování služby App Service a účet úložiště ve skupině prostředků. Také jste vytvořili registraci aplikace v Microsoft Entra ID. Pokud jste zvolili externí konfiguraci, možná jste vytvořili nového externího tenanta. Pokud už je nepotřebujete, odstraňte tyto prostředky a registraci aplikace, abyste dál nenabídli poplatky.

V tomto kurzu se naučíte:

  • Odstraňte prostředky Azure vytvořené během tohoto kurzu.

Odstraňte skupinu prostředků

  1. Na webu Azure Portal v nabídce webu Azure Portal vyberte skupiny prostředků.

  2. Vyberte skupinu prostředků, která obsahuje vaše prostředí App Service a plán služby App Service.

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

    Snímek obrazovky znázorňující odstranění skupiny prostředků

Tato akce může trvat několik minut.

Odstranění registrace aplikace

  1. V Microsoft Entra admin center vyberte Registrace aplikací. Pak vyberte aplikaci, kterou jste vytvořili.

    Snímek obrazovky znázorňující výběr registrace aplikace

  2. V přehledu registrace aplikace vyberte Odstranit.

    Snímek obrazovky znázorňující odstranění registrace aplikace

Odstranění externího tenanta

Pokud jste vytvořili nového externího tenanta, můžete ho odstranit.

  1. V Centru pro správu Microsoft Entra přejděte do části Entra ID>Přehled>Spravovat tenanty.

  2. Vyberte tenanta, kterého chcete odstranit, a pak vyberte Odstranit.

    Před odstraněním tenanta možná budete muset dokončit požadované akce. Můžete například potřebovat odstranit všechny toky uživatelů a registrace aplikací v tenantovi.

  3. Pokud jste připraveni tenanta odstranit, vyberte Odstranit.

Další kroky

V tomto kurzu jste se naučili, jak:

  • Udělte delegovaná oprávnění webové aplikaci.
  • Zavolejte Microsoft Graph z webové aplikace pro přihlášeného uživatele