Construa autenticação ASP.NET Core com Logto
Aprenda a construir um fluxo de autenticação de usuário com ASP.NET Core integrando o SDK Logto.
Introdução
- Logto é uma alternativa moderna para Auth0 para construir infraestrutura de identidade do cliente com esforço mínimo. Ele suporta vários métodos de sign-in, incluindo nome de usuário, e-mail, número de telefone e sign-ins sociais populares, como Google e GitHub.
- ASP.NET Core é um framework de código aberto, multiplataforma e de alto desempenho para a construção de aplicações modernas, baseadas em nuvem e conectadas à Internet.
Neste tutorial, mostraremos como construir um fluxo de autenticação do usuário com ASP.NET Core integrando o SDK Logto. O tutorial usa C# como linguagem de programação.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
- Uma conta Logto. Se você não tem, você pode se inscrever de graça.
- Um ambiente de desenvolvimento .NET e um projeto ASP.NET Core. Se você não tem, pode instalar o .NET e seguir os tutoriais ASP.NET para configurar seu projeto.
Crie uma aplicação Logto
Para começar, crie uma aplicação Logto do tipo "Web tradicional". Siga estas etapas para criar uma aplicação Logto:
- Faça login no Console Logto.
- Na barra de navegação à esquerda, clique em Aplicações.
- Clique em Criar aplicação.
- Na página aberta, encontre a seção "Aplicação web tradicional" e localize o cartão "ASP.NET Core".
- Clique em Começar a construir e insira o nome da sua aplicação.
- Clique em Criar.
Então, você deve ver um tutorial interativo guiando você através do processo de integração do SDK Logto com sua aplicação ASP.NET Core. O seguinte conteúdo pode ser uma referência para uso futuro.
Integre com SDK Logto
Instalação
Note que a versão mínima suportada do ASP.NET Core é 6.0
.
Adicione o middleware de autenticação Logto
Abra Startup.cs
(ou Program.cs
) e adicione o código a seguir para registrar o middleware de autenticação Logto:
O método AddLogtoAuthentication
fará as seguintes coisas:
- Define o padrão do esquema de autenticação para
LogtoDefaults.CookieScheme
. - Define o padrão do esquema de desafio para
LogtoDefaults.AuthenticationScheme
. - Define o padrão do esquema de sign-out para
LogtoDefaults.AuthenticationScheme
. - Adiciona os manipuladores de autenticação de cookie e OpenID Connect ao esquema de autenticação.
Sign-in
Adicione o seguinte URI à lista Redirect URIs
na página de detalhes da aplicação Logto:
Para fazer sign-in com Logto, você pode usar o método ChallengeAsync
:
O método ChallengeAsync
redirecionará o usuário para a página de sign-in Logto.
A propriedade RedirectUri
é usada para redirecionar o usuário de volta para sua aplicação web após a autenticação. Note que é diferente do URI de redirect que você configurou na página de detalhes da aplicação Logto:
- O URI de redirecionamento na página de detalhes da aplicação Logto é o URI que Logto redirecionará o usuário de volta após o usuário ter feito o sign-in.
- A propriedade
RedirectUri
é o URI que será redirecionado após as ações necessárias terem sido executadas no middleware de autenticação Logto.
A ordem das ações é 1 -> 2. Para tornar claro, vamos chamar o URI de redirecionamento na página de detalhes da aplicação Logto de URI de redirecionamento Logto e a propriedade RedirectUri
de URI de redirecionamento da aplicação.
O URI de redirecionamento de Logto tem um valor padrão de /Callback
, que você pode deixar como está se não houver requisito especial. Se você quiser mudar, pode definir a propriedade CallbackPath
para LogtoOptions
:
Lembre-se de atualizar o valor na página de detalhes da aplicação Logto de acordo.
Sign-out
Adicione o seguinte URI à lista Post sign-out redirect URIs
na página de detalhes da aplicação Logto:
Para fazer sign-out com Logto, você pode usar o método SignOutAsync
:
O método SignOutAsync
limpará o cookie de autenticação e redirecionará o usuário para a página de sign-out Logto.
A propriedade RedirectUri
é usada para redirecionar o usuário de volta para sua aplicação web após o sign-out. Note que é diferente do URI de redirecionamento após o sign-out que você configurou na página de detalhes da aplicação Logto:
- O URI de redirecionamento após o sign-out na página de detalhes da aplicação Logto é o URI que Logto redirecionará o usuário de volta após o usuário ter feito o sign-out.
- A propriedade
RedirectUri
é o URI que será redirecionado após as ações necessárias terem sido executadas no middleware de autenticação Logto.
A ordem das ações é 1 -> 2. Para tornar claro, vamos chamar o URI de redirecionamento após o sign-out na página de detalhes da aplicação Logto de URI de redirecionamento após o sign-out Logto e a propriedade RedirectUri
de URI de redirecionamento após o sign-out da aplicação.
O URI de redirecionamento após o sign-out Logto tem um valor padrão de /SignedOutCallback
, que você pode deixar como está se não houver requisito especial. Se você quiser mudar, pode definir a propriedade SignedOutCallbackPath
para LogtoOptions
:
Lembre-se de atualizar o valor na página de detalhes da aplicação Logto de acordo.
Implemente botões de sign-in/sign-out (Razor Pages)
Primeiro, adicione os métodos de manipulação ao seu PageModel
, por exemplo:
Em seguida, adicione os botões à sua página Razor (html):
<p>Está autenticado: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true)
{
<button type="submit" asp-page-handler="SignOut">Desconectar</button>
} else {
<button type="submit" asp-page-handler="SignIn">Conectar</button>
}
</form>
Ele mostrará o botão "Conectar" se o usuário não está autenticado, e mostrará o botão "Desconectar" se o usuário está autenticado.
Ponto de verificação: Execute a aplicação web
Agora você pode executar a aplicação web e tentar fazer sign-in/sign-out com Logto:
- Abra a aplicação web em seu navegador, você deve ver "Está autenticado: Falso" e o botão "Conectar".
- Clique no botão "Conectar", e você deve ser redirecionado para a página de sign-in Logto.
- Após você ter feito o sign-in, você deve ser redirecionado de volta para a aplicação web, e você deve ver "Está autenticado: Verdadeiro" e o botão "Desconectar".
- Clique no botão "Desconectar", e você deve ser redirecionado para a página de sign-out Logto, e depois redirecionado de volta para a aplicação web.
Se você encontrar algum problema durante a integração, por favor, não hesite em nos contatar por e-mail em [email protected] ou junte-se ao nosso servidor Discord!