Toepassing met één pagina: aanmelden en afmelden

Informatie over het toevoegen van aanmelding aan de code voor uw toepassing met één pagina.

Voordat u tokens kunt verkrijgen voor toegang tot API's in uw toepassing, hebt u een geverifieerde gebruikerscontext nodig. U kunt gebruikers op twee manieren aanmelden bij uw toepassing MSAL.js:

U kunt eventueel ook de bereiken van de API's doorgeven waarvoor de gebruiker toestemming moet geven op het moment van aanmelden.

Als uw toepassing al toegang heeft tot een geverifieerde gebruikerscontext of id-token, kunt u de aanmeldingsstap overslaan en tokens rechtstreeks verkrijgen. Zie SSO met gebruikershint voor meer informatie.

Kiezen tussen een pop-up- of omleidingservaring voor aanmelden

De keuze tussen een pop-up- of omleidingservaring is afhankelijk van uw toepassingsstroom:

  • Als u niet wilt dat gebruikers tijdens de verificatie van uw hoofdtoepassingspagina weggaan, raden we de pop-upmethode aan. Omdat de verificatieomleiding plaatsvindt in een pop-upvenster, blijft de status van de hoofdtoepassing behouden.

  • Als gebruikers browserbeperkingen of beleidsregels hebben waarbij pop-upvensters zijn uitgeschakeld, kunt u de omleidingsmethode gebruiken. Gebruik de omleidingsmethode met de browser Internet Explorer, omdat er bekende problemen zijn met pop-upvensters in Internet Explorer.

Aanmelden met een pop-upvenster

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const loginRequest = {
  scopes: ["User.ReadWrite"],
};

let accountId = "";

const myMsal = new PublicClientApplication(config);

myMsal
  .loginPopup(loginRequest)
  .then(function (loginResponse) {
    accountId = loginResponse.account.homeAccountId;
    // Display signed-in user content, call API, etc.
  })
  .catch(function (error) {
    //login failure
    console.log(error);
  });

Aanmelden met omleiding

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const loginRequest = {
  scopes: ["User.ReadWrite"],
};

let accountId = "";

const myMsal = new PublicClientApplication(config);

function handleResponse(response) {
  if (response !== null) {
    accountId = response.account.homeAccountId;
    // Display signed-in user content, call API, etc.
  } else {
    // In case multiple accounts exist, you can select
    const currentAccounts = myMsal.getAllAccounts();

    if (currentAccounts.length === 0) {
      // no accounts signed-in, attempt to sign a user in
      myMsal.loginRedirect(loginRequest);
    } else if (currentAccounts.length > 1) {
      // Add choose account code here
    } else if (currentAccounts.length === 1) {
      accountId = currentAccounts[0].homeAccountId;
    }
  }
}

myMsal.handleRedirectPromise().then(handleResponse);

Afmeldingsgedrag in browsers

Hoe meer apps een gebruiker heeft aangemeld en zich wil afmelden, hoe meer kans op problemen optreedt, gezien de beperkte manieren om dergelijke functionaliteit in browsers te implementeren. De best practices voor internetprivacy van Microsoft raden aan dat op een gedeeld apparaat waarop een gebruiker zich kan afmelden bij een app, de gebruiker de privé-/incognitomodus van een browser moet gebruiken en alle browservensters moet sluiten voordat hij zich van het apparaat afstapt.

Op apparaten die niet worden gedeeld, moeten gebruikers gebruikmaken van een vergrendelingsscherm van het besturingssysteem, zodat ze hun volledige besturingssysteemsessie op het apparaat kunnen vergrendelen of afmelden. Microsoft gebruikt de afmeldingspagina om gebruikers te herinneren aan deze aanbevolen procedures om hun privacy en beveiliging te verbeteren.

Voor gebruikers die niet ervoor kiezen om de veilige aanpak te volgen, kan de app proberen zich voor te bereiden op beide van de volgende gevallen:

  1. De gebruiker die de afmelding rechtstreeks vanuit de app heeft gestart.
  2. Vanuit een andere app die de aanmeldingsstatus deelt met de nieuwe app, maar eigen sessietokens/cookies beheert.

Voor het eerste geval beschrijven de volgende secties opties voor het afmelden van de gebruiker bij een lokale app met behulp van een pop-up of omleiding.

Voor het tweede geval waarin afmelding wordt gestart vanuit een andere app, gebruikt Microsoft de OpenID-Verbinding maken Front Channel-afmelding voor federatieve afmelding. Er gelden enkele beperkingen voor deze implementatie waarbij inhoud van derden wordt geblokkeerd, bijvoorbeeld wanneer browsers cookies van derden standaard blokkeren.

Met de volgende pop-up- en omleidingsmethoden wordt de sessie van de gebruiker op het eindpunt en voor de lokale app beëindigd, maar wordt de sessie voor andere federatieve toepassingen mogelijk niet onmiddellijk gewist als communicatie via front-channel wordt geblokkeerd. Voor een gegarandeerde federatieve afmelding, ongeacht het gedrag van de browser, raden we gebruikers aan om privénavigatie of vergrendelingsschermen te gebruiken.

Afmelden met een pop-upvenster

Deze modus wordt ondersteund, maar heeft dezelfde beperkingen voor aanmelding met een pop-upvenster dat browsers beperkingen of beleidsregels kunnen uitschakelen pop-upvensters. MSAL.js v2 en hoger biedt een logoutPopup methode waarmee de cache in browseropslag wordt gewist en er een pop-upvenster wordt geopend naar de afmeldingspagina van Microsoft Entra. Nadat u zich hebt afgemeld, stuurt Microsoft Entra ID de pop-up terug naar uw toepassing. MSAL.js sluit het pop-upvenster.

U kunt de URI configureren waarnaar microsoft Entra-id moet worden omgeleid na afmelden door de instelling in te stellen postLogoutRedirectUri. Deze URI moet worden geregistreerd als een omleidings-URI in uw toepassingsregistratie.

U kunt ook configureren logoutPopup om het hoofdvenster om te leiden naar een andere pagina, zoals de startpagina of aanmeldingspagina, nadat de afmelding is voltooid door door te geven mainWindowRedirectUri als onderdeel van de aanvraag.

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", // defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const myMsal = new PublicClientApplication(config);

// you can select which account application should sign out
const logoutRequest = {
  account: myMsal.getAccountByHomeId(homeAccountId),
  mainWindowRedirectUri: "your_app_main_window_redirect_uri",
};

await myMsal.logoutPopup(logoutRequest);

Afmelden met een omleiding

MSAL.js biedt een logout methode in v1 en geïntroduceerde logoutRedirect methode in v2 waarmee de cache in browseropslag wordt gewist en het venster wordt omgeleid naar de afmeldingspagina van Microsoft Entra. Nadat u zich hebt afgemeld, wordt Microsoft Entra ID standaard teruggeleid naar de pagina die afmelding heeft aangeroepen.

Omdat de gebruiker de herinnering aan de best practices voor internetprivacy over het gebruik van een privébrowser en vergrendelingsscherm niet ziet, wil de beveiligd-WACHTWOORDVERIFICATIE-app mogelijk ook best practices beschrijven en gebruikers eraan herinneren om alle browservensters te sluiten.

U kunt de URI configureren waarnaar deze moet worden omgeleid na afmelden door de instelling in te stellen postLogoutRedirectUri. Deze URI moet worden geregistreerd als een omleidings-URI in uw toepassingsregistratie.

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const myMsal = new PublicClientApplication(config);

// you can select which account application should sign out
const logoutRequest = {
  account: myMsal.getAccountByHomeId(homeAccountId),
};

myMsal.logoutRedirect(logoutRequest);

Volgende stappen

Ga verder met het volgende artikel in dit scenario, waarbij u een token voor de app verkrijgt.