Partilhar via


Aplicação web que permite que os utilizadores iniciem e terminem sessão: Entrada e saída

Aplica-se a: Círculo verde com um símbolo de marca de verificação branco. Locatários de trabalho Círculo branco com um símbolo X cinzento. Locatários externos (saiba mais)

Saiba como adicionar o início de sessão ao código da sua aplicação web que permite o início de sessão dos utilizadores. Em seguida, saiba como deixá-los sair.

Iniciar sessão

O início de sessão consiste em duas partes:

  • O botão de início de sessão na página HTML
  • A ação de iniciar sessão no code-behind no controlador

Botão de login

No ASP.NET Core, para aplicativos da plataforma de identidade da Microsoft, o botão Entrar é exposto em Views\Shared\_LoginPartial.cshtml (para um aplicativo MVC) ou Pages\Shared\_LoginPartial.cshtm (para um aplicativo Razor). Ele é exibido somente quando o usuário não está autenticado. Ou seja, o botão é exibido quando o utilizador ainda não iniciou sessão ou terminou sessão. Por outro lado, o botão Terminar Sessão é exibido quando o utilizador já iniciou sessão. O controlador de conta é definido no pacote NuGet Microsoft.Identity.Web.UI , na área chamada 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 Ação do responsável pelo tratamento

No ASP.NET, selecionar o botão Entrar no aplicativo Web dispara a SignIn ação no AccountController controlador. Em versões anteriores dos modelos ASP.NET Core, o Account controlador era incorporado ao aplicativo Web. Isso não é mais o caso porque o controlador agora faz parte do pacote NuGet Microsoft.Identity.Web.UI . Consulte AccountController.cs para obter detalhes.

Este controlador também lida com os aplicativos do Azure AD B2C.

Depois de o utilizador iniciar sessão na sua aplicação, desejará permitir-lhe terminar sessão.

Terminar sessão

Sair de um aplicativo Web envolve mais do que remover as informações sobre a conta conectada do estado do aplicativo Web. A aplicação web também deve redirecionar o utilizador para o ponto final da plataforma de identidade da Microsoft logout para terminar a sessão.

Quando o seu aplicativo Web redireciona o utilizador para o ponto de extremidade logout, esse ponto de extremidade limpa a sessão do utilizador no navegador. Se a sua aplicação não alcançou o ponto de extremidade logout, o utilizador pode reauntenticar-se na sua aplicação sem inserir novamente as credenciais. O motivo é que eles terão uma sessão de logon único válida com a plataforma de identidade da Microsoft.

Para saber mais, consulte a seção Enviar uma solicitação de saída na plataforma de identidade da Microsoft e na documentação do protocolo OpenID Connect .

Registo de Aplicativo

Durante o registro do aplicativo, você registra uma URL de logout do canal frontal. No nosso tutorial, registou https://localhost:44321/signout-oidc no campo URL de logout do canal frontal na página de Autenticação. Para obter detalhes, consulte Registrar o aplicativo webApp.

Botão de Terminar Sessão

No ASP.NET, selecionar o botão Sair na aplicação web dispara a SignOut ação no AccountController controlador (veja abaixo)

<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 Ação do responsável pelo tratamento

Em versões anteriores dos modelos ASP.NET Core, o Account controlador era incorporado ao aplicativo Web. Isso não é mais o caso porque o controlador agora faz parte do pacote NuGet Microsoft.Identity.Web.UI . Consulte AccountController.cs para obter detalhes.

  • Configura um URI de redirecionamento OpenID para /Account/SignedOut de modo que o controlador seja chamado de volta quando o Microsoft Entra ID tiver concluído o encerramento da sessão.

  • Chama Signout(), o que permite que o middleware OpenID Connect entre em contato com o ponto de extremidade da plataforma de identidade da Microsoft logout. O ponto final, então:

    • Limpa o cookie de sessão do navegador.
    • Chama de volta o URI de redirecionamento pós-logout. Por padrão, o URI de redirecionamento pós-logout exibe a página de visualização de sessão terminada SignedOut.cshtml.cs. Esta página também é fornecida como parte do Microsoft.Identity.Web.

Interceptando a chamada para o logout endpoint

O URI pós-logout permite que os aplicativos participem do logout global.

O middleware ASP.NET Core OpenID Connect permite que a sua aplicação intercepte a chamada para o endpoint da plataforma de identidade da Microsoft, fornecendo um evento OpenID Connect chamado logout. Isso é tratado automaticamente pelo Microsoft.Identity.Web (que limpa contas no caso em que seu aplicativo Web chama APIs da Web).

Protocolo

Se quiser saber mais sobre como sair, leia a documentação do protocolo disponível no OpenID Connect.

Próximos passos

  • Saiba mais criando uma aplicação Web ASP.NET Core que inicia sessão para utilizadores na seguinte série de tutoriais em várias partes

  • Explore exemplos de aplicativos Web da plataforma de identidade da Microsoft