š Autenticação com JWT no Blazor Server de Forma Simples
- #C#
- #.NET
- #.NET Core
- #.NET C#
- #JWT
- #.NET 5
š Autenticação com JWT no Blazor Server de Forma Simples
Recentemente, precisei criar uma pÔgina de login para autenticar usuÔrios. Foi a primeira vez que implementei autenticação nas minhas aplicações e, como era em Blazor Server, precisei fazer algumas coisas de forma diferente por rodar no servidor usando WebSockets.
š„ 1. Recebendo o Token e Criando os Claims
O primeiro passo foi receber o token JWT enviado por outra API após o login. Para isso, criei um serviço chamado TokenServiceApi, com um método que consumia essa API a partir dos dados do usuÔrio que fez login e me retornava o token.
Dentro dele havia informaƧƵes do usuƔrio, como nome, permissƵes e outros dados importantes.
A ideia Ć© transformar essas informaƧƵes em Claims, uma espĆ©cie de ālista de atributosā sobre o usuĆ”rio. Essa conversĆ£o Ć© importante porque Ć© a partir dos Claims que o Blazor sabe quem estĆ” logado e o que essa pessoa pode fazer no sistema.
š 2. Gerando o User Identity
Com os Claims prontos, criei um User Identity, que nada mais Ć© do que o ācartĆ£o de identificaçãoā do usuĆ”rio dentro da aplicação. Ć como se o sistema dissesse: āOk, reconheƧo essa pessoa e sei quais sĆ£o suas permissƵes.ā
šŖ 3. Criando Cookies no Navegador
Depois, precisei salvar essas informações no navegador para que o usuÔrio não precisasse se autenticar cada vez que recarregasse a pÔgina.
Para isso, gerei cookies contendo os Claims. Esses cookies funcionam como um āpasseā que o navegador apresenta toda vez que o usuĆ”rio acessa uma nova pĆ”gina, confirmando que ele jĆ” fez login.
āļø 4. ConfiguraƧƵes no Program e no Controller
Aqui vieram duas partes importantes:
No Program, configurei o sistema para verificar se o usuÔrio tinha o cookie. Se não tivesse, ele seria redirecionado para a tela de login. Também defini o tempo de expiração do cookie, ou seja, quanto tempo a sessão do usuÔrio ficaria ativa antes de precisar logar novamente.
No Controller, foi onde realmente criei e enviei o cookie para o navegador assim que o token JWT era validado.
š” 5. Criando o Authentication Provider
No Blazor Server, é útil ter um Authentication Provider personalizado. Ele é como uma central que guarda os dados do usuÔrio logado para serem usados em qualquer parte da aplicação.
š 6. Configurando o Router e o [Authorize]
No App.razor, ativei o Cascading Authentication State, que é necessÔrio para que as pÔginas possam reconhecer se o usuÔrio estÔ autenticado ou não.
Depois disso, bastou colocar o atributo [Authorize] nas pÔginas que deveriam ser restritas. Assim, só quem estÔ logado consegue acessar.
š 7. Usando os Dados do UsuĆ”rio na PĆ”gina
Por fim, para buscar mais informaƧƵes do usuƔrio, alƩm das que jƔ estavam no token, criei um mƩtodo que consultava outra API. Mas essa parte varia de projeto para projeto.
Quando precisei usar essas informaƧƵes, apenas injetei o Authentication Provider na pƔgina e consultei os Claims salvos.
Agora me fala aqui, jÔ usou autenticação com Blazor Server?