DEV Community

Cover image for Sistema de Autenticação com Spring Security
Benjamim Alves
Benjamim Alves

Posted on

Sistema de Autenticação com Spring Security

Introdução

Neste documento, apresento o sistema de autenticação desenvolvido usando o Spring Security em uma aplicação web chamada "BookCatalog". O objetivo do sistema é permitir que os usuários se autentiquem e acessem recursos protegidos na aplicação.
Github

Funcionalidades

O sistema de autenticação possui as seguintes funcionalidades:

  1. Registro de Usuários: Os usuários podem se registrar na aplicação fornecendo um nome de usuário, e-mail e senha.

  2. Autenticação: Os usuários registrados podem fazer login usando seu e-mail e senha para acessar recursos protegidos.

  3. Token JWT: Após a autenticação bem-sucedida, o sistema fornece um token JWT (JSON Web Token) que contém informações adicionais do usuário, como o primeiro nome e o ID.

  4. Acesso a Recursos Protegidos: O token JWT é usado para autenticar solicitações subsequentes para recursos protegidos no servidor.

Motivação para o Uso do Spring Security

O Spring Security é um módulo poderoso do Spring Framework projetado para fornecer segurança em aplicativos corporativos. Nossa escolha pelo uso do Spring Security para implementar o sistema de autenticação se baseia nos seguintes motivos:

  1. Fácil Integração: O Spring Security é altamente integrado ao ecossistema do Spring, o que facilita a integração com outros componentes da aplicação.

  2. Configuração Flexível: O Spring Security oferece uma configuração flexível, permitindo a personalização das regras de segurança e a autenticação usando diferentes mecanismos.

  3. Fluxo OAuth2: O Spring Security oferece suporte completo para o fluxo de autenticação OAuth2, permitindo a integração com provedores de identidade externos.

  4. Segurança Atualizada: O Spring Security é uma biblioteca bem estabelecida, que é atualizada regularmente para lidar com novas ameaças de segurança.

Processo de Login Detalhado

O processo de login no sistema de autenticação é composto pelos seguintes passos:

  1. Autenticação no Frontend: O usuário insere suas credenciais (e-mail e senha) no frontend e envia a solicitação de login para o servidor.

  2. frontend envia uma requisição para o backend com informações de login (Camada resource)

Image description

  1. Envia a requisição para a camada de serviços , onde usamos a função UserDetailsService personalizado para transmitir e recurperar as inforções no banco de dados

Image description

  1. Na camada repository é feita efetivamente a recuperação do usuario do banco de dados por meio do JPA

Image description

  1. Depois da aplicação bem sucedida o token é fornecido pelo spring security

Image description

  1. Autenticação no Servidor: O servidor recebe a solicitação de login e usa o AuthenticationManager do Spring Security para autenticar o usuário. Ele utiliza um UserDetailsService personalizado para recuperar as informações do usuário (como e-mail, senha e permissões) do banco de dados com base no e-mail fornecido.

  2. Geração do Token JWT: Se as credenciais do usuário forem válidas, o servidor gera um token JWT usando o JwtTokenEnhancer. Essa classe é responsável por adicionar informações adicionais ao token JWT, como o primeiro nome e o ID do usuário.

  3. Resposta ao Frontend: O servidor responde à solicitação de login com o token JWT no corpo da resposta. O frontend armazena o token de forma segura (por exemplo, em cookies) para uso em solicitações futuras.

  4. Acesso a Recursos Protegidos: Nas solicitações futuras, o frontend inclui o token JWT no cabeçalho "Authorization" da solicitação, usando o esquema "Bearer". O servidor verifica a validade do token e permite o acesso aos recursos protegidos se a autenticação for bem-sucedida.

Conclusão

O sistema de autenticação implementado usando o Spring Security fornece uma camada de segurança robusta para a aplicação "BookCatalog". Com suporte ao fluxo OAuth2 e a geração de tokens JWT, os usuários podem autenticar-se de forma segura e acessar recursos protegidos na aplicação.

O Spring Security oferece uma configuração flexível e é altamente integrado ao ecossistema do Spring, tornando-o uma escolha ideal para implementar recursos de segurança em aplicativos corporativos. Com ele, garantimos a proteção adequada dos dados dos usuários e a prevenção de acesso não autorizado aos recursos da aplicação.

Top comments (0)