DEV Community

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

Posted on

1

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.

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay