Share via


Toepassing met één pagina: aanmelden en afmelden

Voordat u tokens kunt verkrijgen voor toegang tot API's in uw toepassing, hebt u een geverifieerde gebruikerscontext nodig. Als u een gebruiker wilt verifiëren, kunt u een pop-upvenster en/of een aanmeldingsmethode omleiden gebruiken.

Als uw toepassing toegang heeft tot een geverifieerde gebruikerscontext of id-token, kunt u de aanmeldingsstap overslaan en tokens rechtstreeks verkrijgen. Zie Eenmalige aanmelding (SSO) met hint van de gebruiker voor meer informatie.

Kiezen tussen een pop-up- of omleidingservaring

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

  • Gebruik een pop-upvenster als u niet wilt dat gebruikers tijdens de verificatie van uw hoofdtoepassingspagina weggaan. Omdat de verificatieomleiding plaatsvindt in een pop-upvenster, blijft de status van de hoofdtoepassing behouden.

  • Gebruik een omleiding als gebruikers browserbeperkingen of beleidsregels hebben waarbij pop-upvensters zijn uitgeschakeld. Er zijn bijvoorbeeld bekende problemen 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 een 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);

Gedrag afmelden bij browsers

Om ervoor te zorgen dat u zich veilig afmeldt bij een of meer apps, worden de volgende methoden aanbevolen:

  • Op gedeelde apparaten moeten gebruikers de privé-/incognitomodus van een browser gebruiken en alle browservensters sluiten voordat ze van het apparaat afstappen.

  • Op apparaten die niet worden gedeeld, moeten gebruikers een vergrendelingsscherm van het besturingssysteem gebruiken om hun hele besturingssysteemsessie op het apparaat te vergrendelen of af te melden. Microsoft gebruikt de afmeldingspagina om gebruikers te herinneren aan deze aanbevolen procedures voor privacy en beveiliging.

Zie de best practices voor internetprivacy van Microsoft voor meer informatie.

Als een gebruiker ervoor kiest zich niet af te melden met behulp van de aanbevelingen, zijn de volgende methoden om afmeldingsfunctionaliteit in te schakelen:

  • De afmelding van het Front Channel van Microsoft OpenID Connect voor federatieve afmelding. U kunt deze optie gebruiken wanneer een app een aanmeldingsstatus deelt met een nieuwe app, maar eigen sessietokens/cookies beheert. Er gelden enkele beperkingen voor deze implementatie waarbij inhoud wordt geblokkeerd, bijvoorbeeld wanneer browsers cookies van derden blokkeren.

  • Pop-upvenster en/of omleiding voor lokale app-afmelding. De pop-up- en omleidingsmethoden beëindigen de sessie van de gebruiker op het eindpunt en voor de lokale app. Maar deze methoden kunnen de sessie voor andere federatieve toepassingen mogelijk niet onmiddellijk wissen als front-channelcommunicatie wordt geblokkeerd.

Afmelden met een pop-upvenster

MSAL.js v2 en hoger biedt een logoutPopup methode waarmee de cache in browseropslag wordt gewist en er een pop-upvenster wordt geopend op de aanmeldingspagina van Microsoft Entra. Nadat u zich hebt afgemeld, wordt de omleiding standaard ingesteld op de aanmeldingspagina en wordt het pop-upvenster gesloten.

Voor de ervaring na afmelden kunt u instellen postLogoutRedirectUri dat de gebruiker wordt omgeleid naar een specifieke URI. Deze URI moet worden geregistreerd als een omleidings-URI in uw toepassingsregistratie. U kunt het hoofdvenster ook omleiden logoutPopup naar een andere pagina, zoals de startpagina of aanmeldingspagina 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 een logoutRedirect methode in v2 waarmee de cache in browseropslag wordt gewist en wordt omgeleid naar de afmeldingspagina van Microsoft Entra. Nadat u zich hebt afgemeld, wordt de omleiding standaard ingesteld op de startpagina voor aanmelden.

Voor de ervaring na afmelden kunt u instellen postLogoutRedirectUri dat de gebruiker wordt omgeleid naar een specifieke URI. Deze URI moet worden geregistreerd als een omleidings-URI in uw toepassingsregistratie.

Omdat de herinnering van microsoft aan best practices voor internetprivacy over het gebruik van een privébrowser en vergrendelingsscherm niet wordt weergegeven in deze methode, kunt u best practices beschrijven en gebruikers eraan herinneren om alle browservensters te sluiten.

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.