Condividi tramite


App Web che effettua l’accesso degli utenti: accesso e disconnessione

Informazioni su come aggiungere l'accesso al codice per l'app Web che effettua l’accesso degli utenti. Quindi, scopri come lasciarli disconnettere.

Accedi

L'accesso è costituito da due parti:

  • Pulsante di accesso nella pagina HTML
  • Azione di accesso nel code-behind nel controller

Pulsante Accedi

In ASP.NET Core, per le applicazioni Microsoft Identity Platform, il pulsante Accedi viene esposto in Views\Shared\_LoginPartial.cshtml (per un'app MVC) o Pages\Shared\_LoginPartial.cshtm (per un'app Razor). Viene visualizzato solo quando l'utente non è autenticato. Ovvero, viene visualizzato quando l'utente non ha ancora eseguito l'accesso o si è disconnesso. Al contrario, il pulsante Disconnetti viene visualizzato quando l'utente è già connesso. Si noti che il controller account è definito nel pacchetto NuGet Microsoft.Identity.Web.UI, nell'area denominata 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 azione del controller

In ASP.NET la selezione del pulsante Accedi nell'app Web attiva l'azione SignIn nel controller AccountController. Nelle versioni precedenti dei modelli ASP.NET Core, il controller Account è stato incorporato con l'app Web. Questo non è più il caso perché il controller fa ora parte del pacchetto NuGet Microsoft.Identity.Web.UI. Per informazioni dettagliate, vedere AccountController.cs.

Questo controller gestisce anche le applicazioni Azure AD B2C.

Dopo che l'utente ha eseguito l'accesso all'app, è necessario abilitarli per disconnettersi.

Disconnessione

La disconnessione da un'app Web comporta più che rimuovere le informazioni sull'account connesso dallo stato dell'app Web. Inoltre, l’app web deve reindirizzare l'utente all'endpoint logout Microsoft Identity Platform per la disconnessione.

Quando l'app Web reindirizza l'utente all'endpoint logout, l’endpoint cancella la sessione dell'utente dal browser. Se l'app non è andata all'endpoint logout, l'utente eseguirà nuovamente l’autenticazione all'app senza immetterne di nuovo le credenziali. Il motivo è che avranno una sessione di accesso Single Sign-In valida con Microsoft Identity Platform.

Per altre informazioni, vedere la sezione Inviare una richiesta di disconnessione nella documentazione di Microsoft Identity Platform e del protocollo OpenID Connect.

Registrazione dell'applicazione

Durante la registrazione dell'applicazione, si registra un URL di disconnessione del canale anteriore. Nell'esercitazione è stata eseguita la registrazione di https://localhost:44321/signout-oidc nel campo URL di disconnessione del canale frontale nella pagina Autenticazione. Per informazioni dettagliate, vedere Registrare l'app WebApp.

Un pulsante per la disconnessione

In ASP.NET la selezione del pulsante Accedi nell'app Web attiva l'azione SignOut nel controller AccountController (vedere qui di seguito)

<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 azione del controller

Nelle versioni precedenti dei modelli ASP.NET Core, il controller Account è stato incorporato con l'app Web. Questo non è più il caso perché il controller fa ora parte del pacchetto NuGet Microsoft.Identity.Web.UI. Per informazioni dettagliate, vedere AccountController.cs.

  • Imposta un URI di reindirizzamento OpenID su /Account/SignedOut in modo che il controller venga richiamato quando Microsoft Entra ID ha completato la disconnessione.

  • Chiama Signout(), che consente al middleware OpenID Connect di contattare l'endpoint di Microsoft Identity Platform logout. L'endpoint quindi:

    • Cancella il cookie di sessione dal browser.
    • Richiama l'URI di reindirizzamento post-disconnessione. Per impostazione predefinita, l'URI di reindirizzamento post-disconnessione visualizza la pagina di visualizzazione disconnessa SignedOut.cshtml.cs. Questa pagina viene fornita anche come parte di Microsoft.Identity.Web.

Intercettazione della chiamata all'endpoint logout

L'URI post-disconnessione consente alle applicazioni di partecipare alla disconnessione globale.

Il middleware ASP.NET Core OpenID Connect consente all'app di intercettare la chiamata all'endpoint logout di Microsoft Identity Platform fornendo un evento OpenID Connect denominato OnRedirectToIdentityProviderForSignOut. Questo viene gestito automaticamente da Microsoft.Identity.Web (che cancella gli account nel caso in cui l'app Web chiama api Web)

Protocollo

Per altre informazioni sulla disconnessione, leggere la documentazione del protocollo disponibile in OpenID Connect.

Passaggi successivi

  • Per ulteriori informazioni, creare un'app Web ASP.NET Core che effettua l’accesso degli utenti nella serie di esercitazioni in più parti seguenti

  • Esplorare gli esempi di app Web di Microsoft Identity Platform