Aplikacja internetowa, która loguje użytkowników: logowanie i wylogowywanie

Dowiedz się, jak dodać logowanie do kodu aplikacji internetowej, która loguje użytkowników. Następnie dowiedz się, jak je wylogować.

Logowanie

Logowanie składa się z dwóch części:

  • Przycisk logowania na stronie HTML
  • Akcja logowania w kodzie w kontrolerze

Przycisk Logowania

W ASP.NET Core w przypadku aplikacji Platforma tożsamości Microsoft przycisk Zaloguj jest uwidoczniony Views\Shared\_LoginPartial.cshtml (w przypadku aplikacji MVC) lub Pages\Shared\_LoginPartial.cshtm (w przypadku aplikacji Razor). Jest on wyświetlany tylko wtedy, gdy użytkownik nie jest uwierzytelniony. Oznacza to, że jest wyświetlany, gdy użytkownik jeszcze się nie zalogował lub nie wylogował. Wręcz przeciwnie, przycisk Wyloguj jest wyświetlany, gdy użytkownik jest już zalogowany. Należy pamiętać, że kontroler konta jest zdefiniowany w pakiecie NuGet Microsoft.Identity.Web.UI w obszarze o nazwie MicrosoftIdentity

<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 działanie kontrolera

W ASP.NET wybranie przycisku Zaloguj się w aplikacji internetowej powoduje wyzwolenie SignIn akcji na kontrolerze AccountController . W poprzednich wersjach szablonów Account ASP.NET Core kontroler został osadzony z aplikacją internetową. Tak już nie jest, ponieważ kontroler jest teraz częścią pakietu NuGet Microsoft.Identity.Web.UI . Aby uzyskać szczegółowe informacje, zobacz AccountController.cs .

Ten kontroler obsługuje również aplikacje usługi Azure AD B2C.

Po zalogowaniu się użytkownika do aplikacji należy włączyć ich wylogowanie.

Wylogowywanie

Wylogowywanie z aplikacji internetowej wymaga więcej niż usunięcia informacji o zalogowanym koncie ze stanu aplikacji internetowej. Aplikacja internetowa musi również przekierować użytkownika do punktu końcowego Platforma tożsamości Microsoftlogout, aby się wylogować.

Gdy aplikacja internetowa przekierowuje użytkownika do punktu końcowego logout , ten punkt końcowy wyczyści sesję użytkownika z przeglądarki. Jeśli aplikacja nie przejdzie do punktu końcowego logout , użytkownik ponownie uwierzytelni aplikację bez konieczności ponownego wprowadzania poświadczeń. Przyczyną jest to, że będą mieć prawidłową sesję logowania jednokrotnego z Platforma tożsamości Microsoft.

Aby dowiedzieć się więcej, zobacz sekcję Wysyłanie żądania wylogowania w Platforma tożsamości Microsoft i dokumentację protokołu OpenID Connect.

Rejestrowanie aplikacji

Podczas rejestracji aplikacji należy zarejestrować adres URL wylogowywania kanału frontonu. W naszym samouczku zarejestrowano https://localhost:44321/signout-oidc się w polu Adres URL wylogowywania kanału frontonu na stronie Uwierzytelnianie. Aby uzyskać szczegółowe informacje, zobacz Rejestrowanie aplikacji internetowej.

Przycisk Wyloguj

W ASP.NET wybranie przycisku Wyloguj w aplikacji internetowej powoduje wyzwolenie SignOut akcji na kontrolerze AccountController (patrz poniżej)

<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 działanie kontrolera

W poprzednich wersjach szablonów Account ASP.NET Core kontroler został osadzony z aplikacją internetową. Tak już nie jest, ponieważ kontroler jest teraz częścią pakietu NuGet Microsoft.Identity.Web.UI . Aby uzyskać szczegółowe informacje, zobacz AccountController.cs .

  • Ustawia identyfikator URI przekierowania identyfikatora OpenID tak /Account/SignedOut , aby kontroler był wywoływany z powrotem, gdy identyfikator Entra firmy Microsoft zakończył wylogowywanie.

  • Wywołuje metodę Signout(), która umożliwia oprogramowanie pośredniczące OpenID Connect kontaktowanie się z punktem końcowym Platforma tożsamości Microsoftlogout. Następnie punkt końcowy:

    • Czyści plik cookie sesji z przeglądarki.
    • Wywołuje ponownie identyfikator URI przekierowania po wylogowaniu. Domyślnie identyfikator URI przekierowania po wylogowaniu wyświetla stronę widoku wylogowania SignedOut.cshtml.cs. Ta strona jest również udostępniana jako część Microsoft.Identity.Web.

Przechwytywanie wywołania do punktu końcowego logout

Identyfikator URI po wylogowaniu umożliwia aplikacjom uczestnictwo w globalnym wylogowaniu.

Oprogramowanie pośredniczące ASP.NET Core OpenID Connect umożliwia aplikacji przechwycenie wywołania punktu końcowego Platforma tożsamości Microsoft logout przez podanie zdarzenia OpenID Connect o nazwie OnRedirectToIdentityProviderForSignOut. Jest to obsługiwane automatycznie przez microsoft.Identity.Web (co powoduje wyczyszczenie kont w przypadku, gdy aplikacja internetowa wywołuje internetowe interfejsy API)

Protokół

Jeśli chcesz dowiedzieć się więcej na temat wylogowywanie, przeczytaj dokumentację protokołu dostępną w witrynie OpenID Connect.

Następne kroki

  • Dowiedz się więcej, tworząc aplikację internetową platformy ASP.NET Core, która loguje użytkowników w poniższej serii samouczków wieloczęściowych

  • Eksplorowanie przykładów aplikacji internetowej Platforma tożsamości Microsoft