Delen via


Zelfstudie: Toegang krijgen tot Microsoft Graph vanuit een beveiligde JavaScript-app als de gebruiker

Ontdek hoe u toegang tot Microsoft Graph krijgt vanuit een web-app die wordt uitgevoerd in Azure App Service.

Diagram waarin de toegang tot Microsoft Graph wordt weergegeven.

U wilt toegang tot Microsoft Graph vanuit uw web-app toevoegen en een actie uitvoeren als de aangemelde gebruiker. In deze sectie wordt beschreven hoe u gedelegeerde machtigingen verleent aan de web-app en hoe u de profielgegevens van de aangemelde gebruiker opvragen uit Microsoft Entra ID.

In deze zelfstudie leert u het volgende:

  • Gedelegeerde machtigingen verlenen aan een web-app.
  • Microsoft Graph vanuit een web-app aanroepen voor een aangemelde gebruiker.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

De front-end toegang verlenen om Microsoft Graph aan te roepen

Nu u verificatie en autorisatie voor uw web-app hebt ingeschakeld, wordt de web-app geregistreerd bij het Microsoft Identity Platform en wordt deze ondersteund door een Microsoft Entra-toepassing. In deze stap geeft u de web-app machtigingen voor toegang tot Microsoft Graph voor de gebruiker. (Technisch gezien geeft u de Microsoft Entra-toepassing van de web-app de machtigingen voor toegang tot de Microsoft Graph Microsoft Entra-toepassing voor de gebruiker.)

  1. Selecteer Toepassingen in het Microsoft Entra-beheercentrum.

  2. Selecteer App-registraties>Toepassingen in eigendom>Alle toepassingen in deze map weergeven. Selecteer de naam van uw web-app en selecteer vervolgens API-machtigingen.

  3. Selecteer Een machtiging toevoegen en selecteer vervolgens Microsoft-API's en Microsoft Graph.

  4. Selecteer Gedelegeerde machtigingen en selecteer vervolgens User.Read in de lijst. Selecteer Machtigingen toevoegen.

App Service configureren zodat een bruikbaar toegangstoken wordt geretourneerd

De web-app beschikt nu over de vereiste machtigingen voor toegang tot Microsoft Graph als de aangemelde gebruiker. In deze stap configureert u App Service-verificatie en -autorisatie zodat u een bruikbaar toegangstoken hebt voor toegang tot Microsoft Graph. Voor deze stap moet u het bereik User.Read toevoegen voor de downstreamservice (Microsoft Graph): https://graph.microsoft.com/User.Read.

Belangrijk

Als u App Service niet configureert om een bruikbaar toegangstoken te retourneren, ziet u de foutmelding CompactToken parsing failed with error code: 80049217 wanneer u Microsoft Graph-API's in uw code aanroept.

Ga naar Azure Resource Explorer en gebruik de resourcestructuur om de web-app te zoeken. De resource-URL moet er ongeveer zo uitzien: https://resources.azure.com/subscriptions/subscriptionId/resourceGroups/SecureWebApp/providers/Microsoft.Web/sites/SecureWebApp20200915115914.

De Azure Resource Explorer wordt nu geopend met uw web-app geselecteerd in de resourcestructuur.

  1. Selecteer boven aan de pagina Lezen/schrijven om de Azure-resources te kunnen bewerken.

  2. In de linkerbrowser kunt u inzoomen op configuratieauthsettingsV2>.

  3. Selecteer Bewerken in de weergave authsettingsV2.

  4. Zoek de aanmeldingssectie van identityProviders ->azureActiveDirectory en voeg de volgende loginParameters-instellingen toe: "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. Sla de instellingen op door PUT te selecteren. Het kan enkele minuten duren voordat deze instelling is doorgevoerd. Uw web-app is nu geconfigureerd voor toegang tot Microsoft Graph met het juiste toegangstoken. Als u dit niet goed configureert, retourneert Microsoft Graph een foutmelding waarin staat dat de indeling van het compacte token incorrect is.

Microsoft Graph aanroepen vanuit Node.js

Uw web-app heeft nu de vereiste machtigingen en voegt tevens de client-id van Microsoft Graph toe aan de aanmeldingsparameters.

Clientbibliotheekpakketten installeren

Installeer de @azure/identity en de @microsoft/microsoft-graph-clientpakketten in uw project met npm.

npm install @microsoft/microsoft-graph-client

Verificatiegegevens configureren

Maak een object voor het opslaan van de verificatie-instellingen:

// 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
        },
    },
}

Microsoft Graph aanroepen namens de gebruiker

De volgende code laat zien hoe u de Microsoft Graph-controller aanroept als de app en wat gebruikersgegevens opvragen.

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

De vorige code is afhankelijk van de volgende getAuthenticatedClient-functie om de Microsoft Graph-client te retourneren.

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

Resources opschonen

Als u alle stappen in deze zelfstudie met meerdere onderdelen hebt voltooid, hebt u een App Service-, App Service-hostingabonnement en een opslagaccount in een resourcegroep gemaakt. U hebt ook een app-registratie gemaakt in Microsoft Entra ID. Als u een externe configuratie hebt gekozen, hebt u mogelijk een nieuwe externe tenant gemaakt. Wanneer de resources niet meer nodig zijn, verwijdert u deze en de app-registratie, zodat er geen kosten meer bij u in rekening worden gebracht.

In deze zelfstudie leert u het volgende:

  • De Azure-resources verwijderen die tijdens de zelfstudie zijn gemaakt.

De resourcegroep verwijderen

Selecteer in Azure Portal resourcegroepen in het portalmenu en selecteer de resourcegroep die uw App Service- en App Service-plan bevat.

Selecteer Resourcegroep verwijderen om de resourcegroep en alle resources te verwijderen.

Schermopname waarin de resourcegroep wordt verwijderd.

Het uitvoeren van deze opdracht kan enkele minuten duren.

De app-registratie verwijderen

Selecteer Toepassingen> in het Microsoft Entra-beheercentrum App-registraties. Selecteer vervolgens de toepassing die u heeft gemaakt. Schermopname van de selectie app-registratie.

Selecteer Verwijderen in het app-registratieoverzicht. Schermopname waarin de app-registratie wordt verwijderd.

De externe tenant verwijderen

Als u een nieuwe externe tenant hebt gemaakt, kunt u deze verwijderen. Blader in het Microsoft Entra-beheercentrum naar Tenants beheren met identiteitsoverzicht>>.

Selecteer de tenant die u wilt verwijderen en selecteer vervolgens Verwijderen.

Mogelijk moet u de vereiste acties voltooien voordat u de tenant kunt verwijderen. Mogelijk moet u bijvoorbeeld alle gebruikersstromen en app-registraties in de tenant verwijderen.

Als u klaar bent om de tenant te verwijderen, selecteert u Verwijderen.

Volgende stappen

In deze zelfstudie heeft u het volgende geleerd:

  • Gedelegeerde machtigingen verlenen aan een web-app.
  • Microsoft Graph vanuit een web-app aanroepen voor een aangemelde gebruiker.