Delen via


Quickstart: Gebruikers aanmelden in een app met één pagina (SPA) en de Microsoft Graph API aanroepen

In deze quickstart gebruikt u een voorbeeld-app met één pagina (SPA) om u te laten zien hoe u gebruikers kunt aanmelden met behulp van de autorisatiecodestroom met Proof Key for Code Exchange (PKCE) en de Microsoft Graph API aanroept. In het voorbeeld wordt de Microsoft Authentication Library gebruikt om verificatie af te handelen.

Voorwaarden

  • Een Azure-account met een actief abonnement. Als u er nog geen hebt, maak gratis een account aan.
  • Dit Azure-account moet machtigingen hebben voor het beheren van toepassingen. Een van de volgende Microsoft Entra-rollen omvat de vereiste machtigingen:
    • Toepassingsbeheerder
    • Toepassingsontwikkelaar
    • Cloudtoepassingsbeheerder.
  • Node.js.
  • Visual Studio Code of een andere code-editor.

De toepassing registreren en identificaties vastleggen

Als u de registratie wilt voltooien, geeft u de toepassing een naam op, geeft u de ondersteunde accounttypen op en voegt u een omleidings-URI toe. Nadat de toepassing is geregistreerd, worden in het deelvenster Overzicht de id's weergegeven die nodig zijn in de broncode van de toepassing.

  1. Meld u aan bij het Microsoft Entra-beheercentrum.

  2. Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om over te schakelen naar de tenant waarin u de toepassing wilt registreren in het menu Mappen en abonnementen.

  3. Blader naar Identity>Applications>App-registratiesen selecteer Nieuwe registratie.

  4. Voer een Naam in voor de toepassing, zoals identity-client-spa.

  5. Voor ondersteunde accounttypenselecteert u Accounts in deze organisatiemap alleen. Voor informatie over verschillende accounttypen selecteert u de Help me kiezen optie.

  6. Selecteer registreren.

    Schermopname die laat zien hoe u een naam invoert en het accounttype selecteert in het Microsoft Entra-beheercentrum.

  7. Het deelvenster Overzicht van de toepassing wordt weergegeven wanneer de registratie is voltooid. Noteer de Directory-id (tenant) en de -toepassings-id (client)-id die moet worden gebruikt in de broncode van uw toepassing.

    Schermopname met de id-waarden op de overzichtspagina in het Microsoft Entra-beheercentrum.

    Notitie

    De Ondersteunde accounttypen kunnen worden gewijzigd door te verwijzen naar De accounts wijzigen die worden ondersteund door een toepassing.


Voeg een platformomleidings-URI toe

Voer de volgende stappen uit om uw app-type op te geven voor uw app-registratie:

  1. Selecteer onder beheren, verificatie.
  2. Selecteer op de pagina Platformconfiguraties de optie Een platform toevoegenen selecteer vervolgens de optie SPA.
  3. Voer voor de doorverwijs-URI'shttp://localhost:3000in.
  4. Selecteer Configureren om uw wijzigingen op te slaan.

De voorbeeldtoepassing klonen of downloaden

Als u de voorbeeldtoepassing wilt verkrijgen, kunt u deze klonen vanuit GitHub of downloaden als een .zip-bestand.

  • Als u het voorbeeld wilt klonen, opent u een opdrachtprompt en navigeert u naar de locatie waar u het project wilt maken en voert u de volgende opdracht in:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-javascript.git
    
  • download het .zip bestand. Pak het uit naar een bestandspad waarbij de lengte van de naam minder dan 260 tekens is.

Het project configureren

  1. Open in uw IDE de projectmap ms-identity-docs-code-javascriptmet het voorbeeld.

  2. Open vanillajs-spa/App/public/authConfig.js en werk de volgende waarden bij met de informatie die is vastgelegd in het beheercentrum.

    /**
     * Configuration object to be passed to MSAL instance on creation. 
     * For a full list of MSAL.js configuration parameters, visit:
     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md 
     */
    const msalConfig = {
        auth: {
    
             // WORKFORCE TENANT
             authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", //  Replace the placeholder with your tenant info
             // EXTERNAL TENANT
             // authority: "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/", // Replace the placeholder with your tenant subdomain
            redirectUri: '/', // You must register this URI on App Registration. Defaults to window.location.href e.g. http://localhost:3000/
            navigateToLoginRequestUrl: true, // If "true", will navigate back to the original request location before processing the auth code response.
        },
        cache: {
            cacheLocation: 'sessionStorage', // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO.
            storeAuthStateInCookie: false, // set this to true if you have to support IE
        },
        system: {
            loggerOptions: {
                loggerCallback: (level, message, containsPii) => {
                    if (containsPii) {
                        return;
                    }
                    switch (level) {
                        case msal.LogLevel.Error:
                            console.error(message);
                            return;
                        case msal.LogLevel.Info:
                            console.info(message);
                            return;
                        case msal.LogLevel.Verbose:
                            console.debug(message);
                            return;
                        case msal.LogLevel.Warning:
                            console.warn(message);
                            return;
                    }
                },
            },
        },
    };
    
    /**
     * Scopes you add here will be prompted for user consent during sign-in.
     * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
     * For more information about OIDC scopes, visit: 
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     */
    const loginRequest = {
        scopes: ["User.Read"],
    };
    
    /**
     * An optional silentRequest object can be used to achieve silent SSO
     * between applications by providing a "login_hint" property.
     */
    
    // const silentRequest = {
    //   scopes: ["openid", "profile"],
    //   loginHint: "example@domain.net"
    // };
    
    // exporting config object for jest
    if (typeof exports !== 'undefined') {
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
    }
    
    • clientId : de id van de toepassing, ook wel de client genoemd. Vervang de tekst tussen aanhalingstekens door de applicatie-id (client) waarde die eerder vastgelegd is.
    • authority: de autoriteit is een URL die verwijst naar een directory waaruit MSAL tokens kan aanvragen. Vervang Enter_the_Tenant_Info_Here door de Directory-id (tenant) waarde die eerder is vastgelegd.
    • redirectUri - de omleidings-URI van de toepassing. Vervang indien nodig de tekst tussen aanhalingstekens door de omleidings-URI die eerder is vastgelegd.

De toepassing uitvoeren en u aanmelden en afmelden

Voer het project uit met een webserver met behulp van Node.js:

  1. Voer de volgende opdrachten uit vanuit de projectmap om de server te starten:

    cd vanillajs-spa/App
    npm install
    npm start
    
  2. Kopieer de https-URL die wordt weergegeven in de terminal, bijvoorbeeld https://localhost:3000en plak deze in een browser. U wordt aangeraden een privé- of incognitobrowsersessie te gebruiken.

  3. Volg de stappen en voer de benodigde gegevens in om u aan te melden met uw Microsoft-account. U wordt gevraagd om een e-mailadres, zodat een eenmalige wachtwoordcode naar u kan worden verzonden. Voer de code in wanneer u hierom wordt gevraagd.

  4. De toepassing vraagt toestemming om toegang te behouden tot gegevens die u toegang hebt gegeven tot en om u aan te melden en uw profiel te lezen. Selecteer Accepteren. De volgende schermopname wordt weergegeven, waarmee wordt aangegeven dat u zich hebt aangemeld bij de toepassing en uw profielgegevens hebt geopend vanuit de Microsoft Graph API.

    Schermopname van de JavaScript-app met de resultaten van de API-aanroep.

Voorwaarden

  • Een externe tenant. Kies een van de volgende methoden om er een te maken:
  • Dit Azure-account moet machtigingen hebben voor het beheren van toepassingen. Een van de volgende Microsoft Entra-rollen omvat de vereiste machtigingen:
    • Toepassingsbeheerder
    • Toepassingsontwikkelaar
    • Cloudtoepassingsbeheerder.
  • Node.js.
  • Visual Studio Code of een andere code-editor.

De toepassings- en record-id's registreren

Als u wilt dat uw toepassing gebruikers kan aanmelden met Microsoft Entra, moet Microsoft Entra External ID op de hoogte worden gesteld van de toepassing die u maakt. De app-registratie brengt een vertrouwensrelatie tot stand tussen de app en Microsoft Entra. Wanneer u een toepassing registreert, genereert Externe ID een unieke identifier die bekend staat als een toepassing (client) ID, een waarde die wordt gebruikt om uw app te identificeren bij het maken van verificatieaanvragen.

De volgende stappen laten zien hoe u uw app registreert in het Microsoft Entra-beheercentrum:

  1. Meld u aan bij het Microsoft Entra-beheercentrum als ten minste een toepassingsontwikkelaar.

  2. Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om naar uw externe tenant over te schakelen vanuit het menu Mappen en abonnementen.

  3. Blader naar Identity>Applications>App-registraties.

  4. Selecteer + Nieuwe registratie.

  5. In de Een toepassing registreren pagina die wordt weergegeven;

    1. Voer een zinvolle toepassing in Naam die wordt weergegeven aan gebruikers van de app, bijvoorbeeld ciam-client-app.
    2. Selecteer onder Ondersteunde accounttypenalleen Accounts in deze organisatiemap.
  6. Selecteer registreren.

  7. Het paneel Overzicht van de applicatie wordt weergegeven na succesvolle registratie. Noteer de ID van de -toepassing (cliënt) zodat deze in de broncode van uw toepassing kan worden gebruikt.

Een platformomleidings-URI toevoegen

Voer de volgende stappen uit om uw app-type op te geven voor uw app-registratie:

  1. Selecteer onder Beheerde optie Verificatie.
  2. Selecteer op de pagina PlatformconfiguratiesEen platform toevoegenen selecteer SPA optie.
  3. Voer voor de omleidings-URI'shttp://localhost:3000in.
  4. Selecteer en configureer om uw wijzigingen op te slaan.

Nadat u uw toepassing hebt geregistreerd, wordt de machtiging User.Read toegewezen. Omdat de tenant echter een externe tenant is, kunnen de gebruikers van de klant zelf geen toestemming geven voor deze machtiging. U als tenantbeheerder moet toestemming geven voor deze machtiging namens alle gebruikers in de tenant:

  1. Selecteer op de pagina App-registraties de toepassing die u hebt gemaakt (zoals ciam-client-app) om de pagina Overzicht te openen.

  2. Selecteer onder BeherenAPI-machtigingen.

    1. Selecteer Verleen toestemming van de beheerder voor <uw tenantnaam>, en selecteer vervolgens Ja.
    2. Selecteer Vernieuwenen controleer of verleend voor <uw tenantnaam> wordt weergegeven onder Status voor de machtiging.

Een gebruikersstroom maken

Als de klantgebruikers de aanmeldings- of aanmeldingservaring willen zien wanneer ze uw app gebruiken, moet u uw app koppelen aan een gebruikersstroom. Hoewel veel toepassingen aan uw gebruikersstroom kunnen worden gekoppeld, kan één toepassing slechts worden gekoppeld aan één gebruikersstroom.

  1. Selecteer Identityin het zijbalkmenu.

  2. Selecteer externe identiteitenen gebruikersstromen.

  3. Selecteer op deze pagina Gebruikersstromen de gebruikersstroomnaam die u eerder hebt gemaakt, bijvoorbeeld SignInSignUpSample.

  4. Onder gebruiken, selecteer Toepassingen.

  5. Selecteer Toepassing toevoegen.

  6. Selecteer de toepassing in de lijst, zoals ciam-client-app of gebruik het zoekvak om de toepassing te zoeken en selecteer deze.

  7. Kies Selecteer.

Zodra u uw app aan een gebruikersstroom hebt gekoppeld, kunt u uw gebruikersstroom testen door de registratie- of aanmeldingservaring van een gebruiker te simuleren met uw toepassing vanuit het Microsoft Entra-beheercentrum. Hiervoor gebruikt u de stappen in De gebruikersstroom voor registratie en aanmelding testen.

De SPA koppelen aan de gebruikersstroom

Als de klantgebruikers de aanmeldings- of aanmeldingservaring willen zien wanneer ze uw app gebruiken, moet u uw app koppelen aan een gebruikersstroom. Hoewel veel toepassingen aan uw gebruikersstroom kunnen worden gekoppeld, kan één toepassing slechts worden gekoppeld aan één gebruikersstroom.

  1. Selecteer Identityin het zijbalkmenu.

  2. Selecteer externe identiteitenen gebruikersstromen.

  3. Selecteer op de pagina Gebruikersstromen de naam van de gebruikersstroom u eerder hebt gemaakt, bijvoorbeeld SignInSignUpSample-.

  4. Onder Gebruik, selecteer Toepassingen.

  5. Selecteer Toepassing toevoegen.

  6. Selecteer de toepassing in de lijst, zoals ciam-client-app of gebruik het zoekvak om de toepassing te zoeken en selecteer deze.

  7. Kies Selecteer.

Zodra u uw app aan een gebruikersstroom hebt gekoppeld, kunt u uw gebruikersstroom testen door de registratie- of aanmeldingservaring van een gebruiker te simuleren met uw toepassing vanuit het Microsoft Entra-beheercentrum. Hiervoor gebruikt u de stappen in De gebruikersstroom voor registratie en aanmelding testen.

Voorbeeld SPA klonen of downloaden

Als u de voorbeeldtoepassing wilt verkrijgen, kunt u deze klonen vanuit GitHub of downloaden als een .zip-bestand.

  • Als u het voorbeeld wilt klonen, opent u een opdrachtprompt en navigeert u naar de locatie waar u het project wilt maken en voert u de volgende opdracht in:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • Het voorbeelddownloaden. Pak het uit naar een bestandspad waarbij de lengte van de naam minder dan 260 tekens is.

De voorbeeld-SPA configureren

  1. Open App/public/authConfig.js en vervang het volgende door de waarden die zijn verkregen uit het Microsoft Entra-beheercentrum:

    • Enter_the_Application_Id_Here en vervang deze door de toepassings-id (client) van de app die u eerder hebt geregistreerd.
    • Enter_the_Tenant_Subdomain_Here en vervang dit door het subdomein Directory (tenant). Als uw primaire tenantdomein bijvoorbeeld is contoso.onmicrosoft.com, gebruikt u contoso. Als u uw tenantnaam niet hebt, ontdek dan hoe u uw tenantgegevens kunt lezen.
  2. Sla het bestand op.

Uw project uitvoeren en u aanmelden

  1. Voer de volgende opdrachten uit vanuit de projectmap om de server te starten:

    cd 1-Authentication\0-sign-in-vanillajs\App
    npm install
    npm start
    
  2. Kopieer de https-URL die wordt weergegeven in de terminal, bijvoorbeeld https://localhost:3000en plak deze in een browser. U wordt aangeraden een privé- of incognitobrowsersessie te gebruiken.

  3. Meld u aan met een account dat is geregistreerd bij de tenant.

  4. De volgende schermopname wordt weergegeven, waarmee wordt aangegeven dat u zich hebt aangemeld bij de toepassing en uw profielgegevens hebt geopend vanuit de Microsoft Graph API.

    Schermopname van de JavaScript-app met de resultaten van de API-aanroep.

Afmelden bij de toepassing

  1. Zoek de knop Afmelden op de pagina en selecteer deze.
  2. U wordt gevraagd een account te kiezen waaruit u zich wilt afmelden. Selecteer het account dat u hebt gebruikt om u aan te melden.

Er verschijnt een bericht dat aangeeft dat u zich hebt afgemeld. U kunt nu het browservenster sluiten.