Web-App für Benutzeranmeldungen: An- und Abmeldung

Erfahren Sie, wie Sie dem Code für Ihre Web-App eine Anmeldefunktion zur Benutzeranmeldung hinzufügen. Anschließend erfahren Sie, wie Sie auch die Abmeldung ermöglichen.

Anmeldung

Die Anmeldung besteht aus zwei Teilen:

  • Schaltfläche für die Anmeldung auf der HTML-Seite
  • Anmeldeaktion im CodeBehind im Controller

Schaltfläche für die Anmeldung

In ASP.NET Core wird für Microsoft Identity Platform-Anwendungen die Schaltfläche Anmelden in Views\Shared\_LoginPartial.cshtml (für eine MVC-App) oder Pages\Shared\_LoginPartial.cshtm (für eine Razor-App) verfügbar gemacht. Sie wird nur angezeigt, wenn der Benutzer sich noch nicht authentifiziert hat. Das heißt, sie wird angezeigt, wenn sich der Benutzer noch nicht angemeldet oder sich zuvor abgemeldet hat. Im Gegensatz dazu wird die Schaltfläche Abmelden angezeigt, wenn der Benutzer bereits angemeldet ist. Beachten Sie, dass der Kontocontroller im NuGet-Paket Microsoft.Identity.Web.UI im Bereich MicrosoftIdentity definiert ist.

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

SignIn-Aktion des Controllers

+In ASP.NET wird durch Auswahl der Schaltfläche Anmelden in der Web-App die Aktion SignIn auf dem AccountController-Controller ausgelöst. In früheren Versionen der ASP.NET Core-Vorlagen war der Account-Controller in die Web-App eingebettet. Das ist nicht mehr der Fall, da der Controller jetzt Teil des NuGet-Pakets Microsoft.Identity.Web.UI ist. Weitere Informationen finden Sie unter AccountController.cs.

Dieser Controller behandelt auch die Azure AD B2C-Anwendungen.

Nachdem der Benutzer sich bei Ihrer App angemeldet hat, sollten Sie ihm auch das Abmelden ermöglichen.

Abmeldung

Beim Abmelden von einer Web-App geht es um mehr als um das Entfernen der Informationen zum angemeldeten Konto aus dem Status der Web-App. Die Web-App muss den Benutzer für die Abmeldung außerdem an den logout-Endpunkt von Microsoft Identity Platform umleiten.

Wenn Ihre Web-App den Benutzer an den logout-Endpunkt umleitet, löscht dieser Endpunkt die Sitzung des Benutzers aus dem Browser. Wenn Ihre App nicht den logout-Endpunkt erreicht hat, kann sich der Benutzer erneut bei Ihrer App authentifizieren, ohne die Anmeldeinformationen erneut eingeben zu müssen. Der Grund hierfür ist, dass er über eine gültige Sitzung für einmaliges Anmelden mit Microsoft Identity Platform verfügt.

Weitere Informationen finden Sie im Abschnitt Senden einer Abmeldeanforderung in der Dokumentation zu Microsoft Identity Platform und OpenID Connect-Protokoll.

Anwendungsregistrierung

Bei der Anwendungsregistrierung registrieren Sie eine Front-Channel-Abmelde-URL. In unserem Tutorial haben Sie https://localhost:44321/signout-oidc im Feld Front-Channel-Abmelde-URL auf der Seite Authentifizierung registriert. Weitere Informationen finden Sie unter Registrieren der webApp-App.

Abmeldeschaltfläche

In ASP.NET wird durch Auswahl der Schaltfläche Abmelden in der Web-App die Aktion SignOut auf dem AccountController-Controller ausgelöst (siehe unten).

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

SignOut-Aktion des Controllers

In früheren Versionen der ASP.NET Core-Vorlagen war der Account-Controller in die Web-App eingebettet. Das ist nicht mehr der Fall, da der Controller jetzt Teil des NuGet-Pakets Microsoft.Identity.Web.UI ist. Weitere Informationen finden Sie unter AccountController.cs.

  • Sie legt einen OpenID-Umleitungs-URI auf /Account/SignedOut fest, damit der Controller zurückgerufen wird, wenn Microsoft Entra ID die Abmeldung abgeschlossen hat.

  • Sie ruft Signout() auf, damit die OpenID Connect-Middleware den logout-Endpunkt der Microsoft Identity Platform kontaktieren kann. Der Endpunkt führt dann folgende Aktionen aus:

    • Er löscht den Sitzungscookie im Browser.
    • Er ruft den Umleitungs-URI nach der Abmeldung zurück. Standardmäßig zeigt der Umleitungs-URI nach der Abmeldung SignedOut.cshtml.cs an. Diese Seite wird auch als Teil von Microsoft.Identity.Web bereitgestellt.

Abfangen des Aufrufs an den logout-Endpunkt

Der URI nach der Abmeldung ermöglicht Anwendungen, an der globalen Abmeldung teilzunehmen.

Mit der OpenID Connect-Middleware von ASP.NET Core kann Ihre App den Aufruf an den logout-Endpunkt der Microsoft Identity Platform durch die Bereitstellung des OpenID Connect-Ereignisses OnRedirectToIdentityProviderForSignOut abfangen. Dies erfolgt automatisch durch Microsoft.Identity.Web (indem Konten gelöscht werden, wenn Ihre Web-App Web-APIs aufruft).

Protocol

Weitere Informationen zum Abmelden finden Sie in der Protokolldokumentation, die über OpenID Connect verfügbar ist.

Nächste Schritte

  • Erfahren Sie mehr, indem Sie in der folgenden mehrteiligen Tutorialreihe eine ASP.NET Core-Webanwendung für die Anmeldung von Benutzern erstellen

  • Erkunden von Beispielen für Webanwendungen der Microsoft-Identitätsplattform