Sdílet prostřednictvím


Webová aplikace, která přihlašuje uživatele: Přihlášení a odhlášení

Zjistěte, jak přidat přihlášení do kódu webové aplikace, který přihlašuje uživatele. Potom se naučíte, jak je nechat odhlásit.

Přihlášení

Přihlášení se skládá ze dvou částí:

  • Tlačítko pro přihlášení na stránce HTML
  • Přihlašovací akce v kódu v kontroleru

Tlačítko Pro přihlášení

V ASP.NET Core se pro aplikace Microsoft Identity Platform zobrazí Views\Shared\_LoginPartial.cshtml tlačítko Přihlásit se (pro aplikaci MVC) nebo Pages\Shared\_LoginPartial.cshtm (pro aplikaci Razor). Zobrazí se jenom v případech, kdy uživatel není ověřený. To znamená, že se zobrazí, když se uživatel ještě nepřihlásil nebo se odhlásil. Naopak se tlačítko Odhlásit se zobrazí, když je uživatel již přihlášen. Všimněte si, že řadič účtu je definován v balíčku NuGet Microsoft.Identity.Web.UI v oblasti s názvem 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 akce kontroleru

Když v ASP.NET vyberete tlačítko Přihlásit se ve webové aplikaci, aktivuje se SignIn akce na AccountController kontroleru. V předchozích verzích šablon Account ASP.NET Core byl kontroler vložen do webové aplikace. Už to tak není, protože kontroler je teď součástí balíčku NuGet Microsoft.Identity.Web.UI . Podrobnosti najdete v AccountController.cs .

Tento kontroler také zpracovává aplikace Azure AD B2C.

Jakmile se uživatel přihlásí k aplikaci, budete ho chtít povolit, aby se odhlásil.

Odhlášení

Odhlášení z webové aplikace zahrnuje víc než odebrání informací o přihlášeném účtu ze stavu webové aplikace. Webová aplikace musí uživatele také přesměrovat na koncový bod Microsoft Identity Platform logout , aby se odhlasil.

Když vaše webová aplikace přesměruje uživatele na logout koncový bod, tento koncový bod vymaže relaci uživatele z prohlížeče. Pokud vaše aplikace nepřešla do koncového logout bodu, uživatel se k aplikaci znovu připojí, aniž by znovu zadal své přihlašovací údaje. Důvodem je, že budou mít platnou relaci jednotného přihlašování s platformou Microsoft Identity Platform.

Další informace najdete v části Odeslání žádosti o odhlášení na platformě Microsoft Identity Platform a v dokumentaci k protokolu OpenID Connect.

Registrace aplikace

Během registrace aplikace zaregistrujete adresu URL odhlášení front-channel. V našem kurzu jste se zaregistrovali https://localhost:44321/signout-oidc v poli Adresa URL pro odhlášení front-channel na stránce Ověřování. Podrobnosti najdete v tématu Registrace webové aplikace.

Tlačítko Odhlásit se

Když v ASP.NET vyberete tlačítko Odhlásit se ve webové aplikaci, aktivuje SignOut se akce na AccountController kontroleru (viz níže).

<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 akce kontroleru

V předchozích verzích šablon Account ASP.NET Core byl kontroler vložen do webové aplikace. Už to tak není, protože kontroler je teď součástí balíčku NuGet Microsoft.Identity.Web.UI . Podrobnosti najdete v AccountController.cs .

  • Nastaví identifikátor URI přesměrování OpenID tak /Account/SignedOut , aby se kontroler volal zpět, když id Microsoft Entra dokončilo odhlášení.

  • Volání Signout(), která umožňuje middlewaru OpenID Connect kontaktovat koncový bod platformy Microsoft Identity Platform logout . Koncový bod pak:

    • Vymaže soubor cookie relace z prohlížeče.
    • Volá zpět identifikátor URI přesměrování po odhlášení. Ve výchozím nastavení identifikátor URI přesměrování po odhlášení zobrazuje stránku zobrazení odhlášení SignedOut.cshtml.cs. Tato stránka se také poskytuje jako součást microsoft.Identity.Web.

Zachycení volání koncového logout bodu

Identifikátor URI po odhlášení umožňuje aplikacím účastnit se globálního odhlášení.

Middleware ASP.NET Core OpenID Connect umožňuje vaší aplikaci zachytit volání koncového bodu platformy Microsoft Identity Platform logout tím, že poskytne událost OpenID Connect s názvem OnRedirectToIdentityProviderForSignOut. Tento problém automaticky zpracovává Microsoft.Identity.Web (který vymaže účty v případě, že webová aplikace volá webové rozhraní API)

Protokol

Pokud chcete získat další informace o odhlášení, přečtěte si dokumentaci k protokolu, která je k dispozici v OpenID Connect.

Další kroky

  • Další informace o vytvoření webové aplikace ASP.NET Core, která přihlašuje uživatele v následující sérii kurzů s více částmi

  • Prozkoumání ukázek webových aplikací Microsoft Identity Platform