Condividi tramite


App Web per l'accesso e la disconnessione degli utenti: Accesso e uscita

Scopri come aggiungere l'autenticazione al codice della tua applicazione web che effettua l’accesso degli utenti. Quindi, impara come farli disconnettere.

Accedi

L'accesso è costituito da due parti:

  • Pulsante di accesso nella pagina HTML
  • Azione di autenticazione 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. Il controller dell'account viene 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 consentire loro di disconnettersi.

Disconnettersi

Uscire da un'app Web implica più che semplicemente rimuovere le informazioni sull'account collegato 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 è stata indirizzata all'endpoint logout, l'utente può autenticarsi nuovamente all'app senza inserire nuovamente 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 logout frontale. Nella nostra esercitazione, hai registrato https://localhost:44321/signout-oidc nel campo URL di disconnessione del canale frontale nella pagina Autenticazione. Per informazioni dettagliate, vedere Registrare l'app WebApp.

Pulsante di disconnessione

In ASP.NET, la selezione del pulsante Esci 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 permette al middleware OpenID Connect di contattare l'endpoint della piattaforma di identità di Microsoft 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 visualizzata dopo la disconnessione 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. Questa operazione viene gestita automaticamente da Microsoft.Identity.Web (che cancella gli account nel caso in cui l'app Web chiami LE API Web).

Protocollo

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

Passaggi successivi

  • Scopri di più creando un'app web ASP.NET Core che effettua l’accesso degli utenti della seguente serie di esercitazioni in più parti

  • Esplorare gli esempi di app Web di Microsoft Identity Platform