Veja como o ASP.NET Core 3.1 e o OpenId Connect podem dar trabalho. Prepare-se para lidar com JSON configurando a integração com o IdentityServer4, que promete ser útil no mundo OAuth2, mas pode se tornar um pesadelo de configuração.
Depois da versão 3, houve mudanças importantes no .NET Core, especialmente em Autenticação e Autorização. Agora, transformar um simples "Hello World" em 10 passos virou diversão.
Tenha paciência e ME MOSTRE O CÓDIGO que te deu dor de cabeça!
Você vai precisar de:
- ASP.NET Core 3.1
- Visual Studio
Porque complicar é necessário
Para mais detalhes técnicos, veja Segurança - JWT x Cookies x OAuth x Bearer.
Projeto pequeno, mas chato
Vamos criar um projeto simples como exemplo nessa configuração:
Vá em File > New Project e nomeie a solução de IdentityServerWithMvc. Selecione a opção Web Application com o clássico Model-View-Controller.
Adicione a dependência IdentityServer4 via Manage Nuget Packages.
Configurando o Servidor
O server autentica Usuários ou Clientes. Se algo falhar, recomece.
QuickStart
Use um pacote de Views e Controllers padrão:
Config.cs
Crie o arquivo Config.cs:
Veja o que você está enfrentando:
- Users: A base da aplicação
- Client: A aplicação que solicita tokens
- Resource: Recursos protegidos
Configurando Startup.cs
Configure o IdentityServer no Startup.cs:
Porta 5000
Configure a porta 5000 na seção Debug.
Lidando com o Client
Configure o Client.
Adicione uma ASP.NET Core Web Application com MVC.
No Home/Index.cshtml:
Adicione o pacote OpenIdConnect do Nuget.
Configurando Startup.cs
Configure o Startup.cs:
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute()
.RequireAuthorization();
});
Protegendo uma rota
Adicione um AdminController.
No AdminController:
Na View:
Agora, teste e veja se você ainda está inteiro.
Baixe se tiver coragem
O código do projeto está aqui: GitHub