Udostępnij za pośrednictwem


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

Dotyczy: Zielony okrąg z białym symbolem zaznaczenia. Najemcy siły roboczej Biały okrąg z szarym symbolem X. Najemcy zewnętrzni (dowiedz się więcej)

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

Logowanie

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

  • Przycisk logowania na stronie HTML
  • Akcja logowania w pliku code-behind w kontrolerze

Przycisk Logowania

W ASP.NET Core, w przypadku aplikacji na platformie tożsamości Microsoft, przycisk Zaloguj jest uwidoczniony Views\Shared\_LoginPartial.cshtml(dla aplikacji MVC) lub Pages\Shared\_LoginPartial.cshtm(dla 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. Kontroler konta jest zdefiniowany w pakiecie NuGet Microsoft.Identity.Web.UI, w obszarze nazwanym 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 ramach ASP.NET wybranie przycisku Zalogowanie w aplikacji internetowej powoduje wyzwolenie akcji SignIn na kontrolerze AccountController. W poprzednich wersjach szablonów ASP.NET Core, kontroler był osadzony w aplikacji internetowej. 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.

Wyloguj się

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 może ponownie uwierzytelnić aplikację bez konieczności ponownego wprowadzania poświadczeń. Przyczyną jest to, że będą mieć prawidłową sesję jednokrotnego logowania z platformą tożsamości Microsoft.

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

Rejestrowanie aplikacji

Podczas rejestracji aplikacji rejestrujesz adres URL wylogowywania połączenia front-channel. W naszym samouczku zarejestrowałeś https://localhost:44321/signout-oidc w polu Adres URL wylogowywania kanału frontowego na stronie Uwierzytelnianie. Aby uzyskać szczegółowe informacje, zobacz Rejestrowanie aplikacji internetowej.

Przycisk wylogowania

W ASP.NET wybranie przycisku Wyloguj w aplikacji internetowej wyzwala akcję SignOut 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 ASP.NET Core, kontroler był osadzony w aplikacji internetowej. 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 URI przekierowania OpenID na /Account/SignedOut, aby kontroler został ponownie wywołany po zakończeniu wylogowania się przez Microsoft Entra ID.

  • Wywołuje Signout(), co umożliwia oprogramowaniu pośredniczącemu OpenID Connect kontakt z punktem końcowym platformy tożsamości Microsoft logout. Następnie punkt końcowy:

    • Czyści plik cookie sesji z przeglądarki.
    • Przywraca URI przekierowania po wylogowaniu. Domyślnie URI przekierowania po wylogowaniu wyświetla stronę 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 wylogowaniu globalnym.

Oprogramowanie pośredniczące ASP.NET Core OpenID Connect umożliwia aplikacji przechwycenie wywołania do punktu końcowego platformy tożsamości Microsoft logout poprzez zdarzenie 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 wylogowania, przeczytaj dokumentację protokołu dostępną w witrynie OpenID Connect.

Następne kroki

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

  • Zapoznaj się z przykładami aplikacji internetowych platformy tożsamości Microsoft