Single-Page-Webanwendung: Anmelden und Abmelden

Bevor Sie die Token für den Zugriff auf APIs in Ihrer Anwendung abrufen können, benötigen Sie einen authentifizierten Benutzerkontext. Um eine Benutzerin oder einen Benutzer zu authentifizieren, können Sie ein Popupfenster und/oder eine Umleitungsanmeldungsmethode verwenden.

Wenn Ihre Anwendung Zugriff auf einen authentifizierten Benutzerkontext oder das ID-Token hat, können Sie den Anmeldeschritt überspringen und Token direkt abrufen. Ausführliche Informationen finden Sie unter Single Sign-On (SSO) mit Benutzerhinweisen.

Auswählen zwischen einem Popupfenster oder einer Umleitung

Die Entscheidung für ein Popupfenster oder eine Umleitung hängt von Ihrem Anwendungsfluss ab.

  • Verwenden Sie ein Popupfenster, wenn Sie nicht möchten, dass Benutzerinnen und Benutzer während der Authentifizierung Ihre Hauptanwendungsseite verlassen. Da die Authentifizierungsumleitung in einem Popupfenster erfolgt, wird der Status der Hauptanwendung beibehalten.

  • Verwenden Sie eine Umleitung, wenn für Benutzerinnen und Benutzer Browsereinschränkungen oder Richtlinien gelten, bei denen Popupfenster deaktiviert sind. Es gibt beispielsweise bekannte Probleme bei Popupfenstern im Internet Explorer.

Anmelden mit einem Popupfenster

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

Anmelden mit einer Umleitung

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

Abmeldeverhalten in Browsern

Um sicherzustellen, dass eine oder mehrere Apps sicher abgemeldet werden, werden die folgenden Methoden empfohlen:

  • Auf gemeinsam genutzten Geräten sollten Benutzerinnen und Benutzer den privaten/inkognito-Modus eines Browsers verwenden und alle Browserfenster schließen, bevor sie vom Gerät weggehen.

  • Auf privaten Geräten sollten Benutzerinnen und Benutzer einen Sperrbildschirm des Betriebssystems verwenden, um ihre gesamte Betriebssystemsitzung auf dem Gerät zu sperren oder sich abmelden. Microsoft verwendet seine Abmeldeseite, um Benutzerinnen und Benutzer an diese bewährten Datenschutz- und Sicherheitsmethoden zu erinnern.

Weitere Informationen finden Sie in den bewährten Methoden zum Datenschutz im Internet von Microsoft.

Wenn sich eine Benutzerin oder ein Benutzer entscheidet, sich nicht wie empfohlen abzumelden, gibt es die folgenden anderen Methoden zum Aktivieren der Abmeldefunktion:

  • Die Frontkanal-Abmeldung von Microsoft OpenID Connect für die Verbundanmeldung. Sie können diese Option verwenden, wenn eine App einen Anmeldestatus mit einer neuen App teilt, aber eigene Sitzungstoken/Cookies verwaltet. Es gibt einige Einschränkungen für diese Implementierung, bei der Inhalte blockiert werden, z. B. wenn Browser Cookies von Drittanbietern blockieren.

  • Popupfenster und/oder Umleitungfür lokale App-Abmeldung. Die Popup- und Umleitungsmethoden beenden die Sitzung der Benutzerin oder des Benutzers am Endpunkt und für die lokale App. Diese Methoden können die Sitzung für andere Verbundanwendungen jedoch möglicherweise nicht sofort löschen, wenn die Kommunikation im Frontkanal blockiert wird.

Abmelden mit einem Popupfenster

MSAL.js v2 und höher bietet eine logoutPopup-Methode, die den Cache im Browserspeicher löscht und ein Popupfenster für die Abmeldeseite von Microsoft Entra öffnet. Nach der Abmeldung wird standardmäßig eine Umleitung auf die Anmeldestartseite ausgeführt, und das Popup wird geschlossen.

Sie können postLogoutRedirectUri festlegen, sodass die Benutzerin oder der Benutzer nach der Abmeldung an einen bestimmten URI umgeleitet wird. Dieser URI sollte in Ihrer Anwendungsregistrierung als Umleitungs-URI registriert sein. Sie können logoutPopup auch so konfigurieren, dass das Hauptfenster auf eine andere Seite (z. B. auf die Startseite oder Anmeldeseite) umgeleitet wird, indem Sie mainWindowRedirectUri als Teil der Anforderung übergeben.

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

Abmelden mit einer Umleitung

MSAL.js bietet in v1 eine logout-Methode und in v2 eine logoutRedirect-Methode, die den Cache im Browserspeicher löscht und zur Abmeldeseite von Microsoft Entra umleitet. Nach der Abmeldung wird standardmäßig eine Umleitung auf die Anmeldestartseite ausgeführt.

Sie können postLogoutRedirectUri festlegen, sodass die Benutzerin oder der Benutzer nach der Abmeldung an einen bestimmten URI umgeleitet wird. Dieser URI sollte in Ihrer Anwendungsregistrierung als Umleitungs-URI registriert sein.

Da die Erinnerung von Microsoft an die bewährten Methoden für den Datenschutz im Internet zur Verwendung eines privaten Browsers und Sperrbildschirms bei dieser Methode nicht angezeigt wird, sollten Sie bewährte Methoden beschreiben und Benutzerinnen und Benutzer daran erinnern, alle Browserfenster zu schließen.

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

Nächste Schritte

Fahren Sie mit dem nächsten Artikel in diesem Szenario fort: Abrufen eines Tokens für die App.