Implementação de autenticação e autorização baseada em funções de segurança do Spring com Spring Boot 3.0

May 08 2023
Olá alunos, aqui vamos saber sobre a implementação de segurança de primavera com inicialização de primavera. A segurança do Spring fornece autenticação, autorização e proteção contra ataques comuns.

Olá alunos, aqui vamos saber sobre a implementação de segurança de primavera com inicialização de primavera. A segurança do Spring fornece autenticação, autorização e proteção contra ataques comuns.

Autenticação - Autenticação é como verificamos a identidade do usuário que está tentando acessar um determinado recurso, uma vez realizada a autenticação conhecemos a identidade e podemos realizar a autorização.

Autorização - Autorização significa dar permissão para acessar determinado recurso/url.

Etapas para implementar o Spring Security

Passo 1: Adicione a dependência do Spring Security no POM.XML

Passo 2: Crie uma classe de configuração, adicione métodos de autenticação e autorização.

@EnableWebSecurity fornece configuração de segurança padrão para nosso aplicativo. A segurança padrão ativa os filtros de segurança HTTP e a cadeia de filtros de segurança e aplica a autenticação básica aos nossos endpoints.

@Configuration diz ao Spring Boot para verificar a classe em busca de definições de bean e registrá-las no contexto do aplicativo.

O método authenticateProvider() é usado para armazenar todos os detalhes do usuário, como nome de usuário, senha, funções. O Spring Security contém a classe DaoAuthenticationProvider, que contém userDetailsService e passwordEncoder.passwordEncoder() é usado para criptografar a senha e a senha criptografada é armazenada no banco de dados.

O método SecutityFilterChain() é para autorizar os recursos, aqui

.requestMatchers("/products/welcome","/products/new").permitAll() é para dar acesso a todos os usuários, qualquer usuário pode acessar esses dois urls.

requestMatchers(“/products/**”).authenticated() é para dar acesso a usuários autenticados.

Etapa 3: implementar a autorização baseada em função

@PreAuthorizeA anotação é usada para especificar uma expressão que será avaliada antes que o método seja executado. Se a expressão for avaliada como verdadeira, o método é executado, caso contrário, um AccessDeniedException é lançado.

O getAllProducts()método só pode ser executado por usuários com a ROLE_USERfunção, enquanto o getProductById()método pode ser executado por usuários com a ROLE_ADMINfunção.

Testando a implementação

Adicionado o código de amostra para testar a implementação.

Depois de fornecer as credenciais do usuário, o usuário pode acessar o endpoint do usuário

Quando o usuário tentar acessar o terminal Admin com a credencial do usuário, a página de erro será exibida

Observação: se você quiser o código github funcional desta implementação, siga-me e comente seu ID de e-mail. Vou enviar o link do código-fonte para o seu e-mail.

Parte 2: Autenticação e autorização do Spring Security com JWT

Consulte os links para outros conceitos do Spring Boot:

Tutorial de primavera AOP

Tutorial de log de inicialização do Spring

Configuração Centralizada no Spring Boot

Anotações do Hibernate mais usadas

Padrões importantes de design de microsserviços para entrevistas