Application web qui connecte les utilisateurs : Se connecter et se déconnecter

Découvrez comment ajouter une connexion au code de votre application web pour connecter les utilisateurs. Ensuite, découvrez comment les autoriser à se déconnecter.

Connexion

La connexion comprend deux parties :

  • Le bouton de connexion dans la page HTML
  • L’action de connexion dans le code-behind du contrôleur

Bouton de connexion

Dans ASP.NET Core, pour les applications de plateforme d’identité Microsoft, le bouton Se connecter est exposé dans Views\Shared\_LoginPartial.cshtml (pour une application MVC) ou Pages\Shared\_LoginPartial.cshtm (pour une application Razor). Elles s’affichent uniquement quand l’utilisateur n’est pas authentifié. Autrement dit, il s’affiche lorsque l’utilisateur ne s’est pas encore connecté ou qu’il s’est déconnecté. Au contraire, le bouton Se déconnecter s’affiche lorsque l’utilisateur est déjà connecté. Notez que le contrôleur de compte est défini dans le package NuGet Microsoft.Identity.Web.UI, dans la zone nommée 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>

Action SignIn du contrôleur

Dans ASP.NET, sélectionner le bouton Connexion de l’application web déclenche l’action SignIn sur le contrôleur AccountController. Dans les versions précédentes des modèles ASP.NET Core, le contrôleur Account était incorporé avec l’application web. Ce n’est plus le cas, car le contrôleur fait maintenant partie du package NuGet Microsoft.Identity.Web.UI. Pour plus d’informations, consultez AccountController.cs.

Ce contrôleur gère également les applications Azure AD B2C.

Une fois que l’utilisateur est connecté à votre application, vous voudrez leur donner la possibilité de se déconnecter.

Se déconnecter

La déconnexion d’une application web ne consiste pas seulement à supprimer les informations sur le compte connecté de l’état de l’application web. L’application web doit également rediriger l’utilisateur vers le point de terminaison logout de la plateforme d’identités Microsoft pour suivre la procédure de déconnexion.

Lorsque votre application web redirige l’utilisateur vers le point de terminaison logout, ce dernier efface la session de l’utilisateur dans le navigateur. Si votre application n’a pas atteint le point de terminaison logout, l’utilisateur se réauthentifie auprès de votre application sans entrer à nouveau ses informations d’identification. La raison en est qu’il disposera d’une session d’authentification unique valide auprès de la plateforme d’identités Microsoft.

Pour en savoir plus, consultez la section Envoi d’une demande de déconnexion dans la documentation conceptuelle de la plateforme d’identités Microsoft et du protocole OpenID Connect.

Inscription de l’application

Lors de l’inscription d’application, vous inscrivez une URL de déconnexion du canal frontal. Dans notre tutoriel, vous avez inscrit https://localhost:44321/signout-oidc dans le champ URL de déconnexion du canal frontal de la page Authentification. Pour plus d’informations, voir Inscrire l’application web.

Bouton Déconnexion

Dans ASP.NET, sélectionner le bouton Déconnexion de l’application web déclenche l’action SignOut sur le contrôleur AccountController (voir ci-dessous)

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

Action SignOut du contrôleur

Dans les versions précédentes des modèles ASP.NET Core, le contrôleur Account était incorporé avec l’application web. Ce n’est plus le cas, car le contrôleur fait maintenant partie du package NuGet Microsoft.Identity.Web.UI. Pour plus d’informations, consultez AccountController.cs.

  • Définir un URI de redirection OpenID sur /Account/SignedOut afin que le contrôleur soit rappelé quand Microsoft Entra ID a effectué la déconnexion.

  • Appeler Signout(), ce qui permet à l’intergiciel OpenID Connect de contacter le point de terminaison logout de la plateforme d’identités Microsoft. Ensuite, le point de terminaison :

    • efface le cookie de session du navigateur.
    • Rappelle l’URI de redirection après déconnexion. Par défaut, l’URI de redirection après déconnexion affiche la page de la vue déconnectée SignedOut.cshtml.cs. Cette page est également fournie dans le cadre de Microsoft.Identity.Web.

Interception de l’appel à au point de terminaison logout

L’URI Post-déconnexion permet aux applications de participer à la déconnexion globale.

L’intergiciel OpenID Connect ASP.NET Core permet à votre application d’intercepter l’appel au point de terminaison logout de la plateforme d’identités Microsoft en fournissant un événement OpenID Connect nommé OnRedirectToIdentityProviderForSignOut. Cela est géré automatiquement par Microsoft.Identity.Web (qui efface les comptes dans le cas où votre application web appelle des API web)

Protocol

Pour en savoir plus sur la déconnexion, voir la documentation du protocole, disponible dans OpenID Connect.

Étapes suivantes