Partilhar via


Aplicação Web que inicia sessão nos utilizadores: Iniciar e terminar sessão

Saiba como adicionar início de sessão ao código da sua aplicação Web que inicia sessão nos 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 entrada no code-behind no controlador

Botão de início de sessão

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, ele é exibido quando o usuário ainda não entrou ou saiu. Pelo contrário, o botão Sair é exibido quando o usuário já está conectado. Observe que 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 que o usuário entrar no seu aplicativo, você desejará habilitá-lo para sair.

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. O aplicativo Web também deve redirecionar o usuário para o ponto de extremidade da plataforma logout de identidade da Microsoft para sair.

Quando seu aplicativo Web redireciona o usuário para o logout ponto de extremidade, esse ponto de extremidade limpa a sessão do usuário do navegador. Se seu aplicativo não foi para o logout ponto de extremidade, o usuário se autenticará novamente no aplicativo sem inserir suas credenciais novamente. 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 a documentação do protocolo OpenID Connect.

Registo de aplicação

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

Botão de saída

Além ASP.NET, selecionar o botão Sair no aplicativo 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.

  • Define um URI de redirecionamento OpenID para /Account/SignedOut que o controlador seja chamado de volta quando o Microsoft Entra ID tiver concluído a saída.

  • Chamadas Signout(), que permite que o middleware OpenID Connect entre em contato com o ponto de extremidade da plataforma logout de identidade da Microsoft. 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 exibição desconectada SignedOut.cshtml.cs. Esta página também é fornecida como parte do Microsoft.Identity.Web.

Intercetando a chamada para o logout ponto de extremidade

O URI pós-logout permite que os aplicativos participem da saída global.

O middleware ASP.NET Core OpenID Connect permite que seu aplicativo intercete a chamada para o ponto de extremidade da plataforma logout de identidade da Microsoft fornecendo um evento OpenID Connect chamado OnRedirectToIdentityProviderForSignOut. 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 a saída, leia a documentação do protocolo disponível no OpenID Connect.

Próximos passos

  • Saiba mais criando um aplicativo Web ASP.NET Core que inicia sessão nos utilizadores na seguinte série de tutoriais com várias partes

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