Springboot

Spring Boot Security

Habilitando segurança com Spring

Spring Security é apenas um grupo de filtros de servlet, que ajudam você a adicionar autenticação e autorização ao seu aplicativo da web.

Terminologia

  • Autenticação refere-se ao processo de verificação da identidade de um usuário, com base nas credenciais fornecidas. Um exemplo comum é inserir um nome de usuário e uma senha ao fazer login em um site. Você pode pensar nisso como uma resposta à pergunta: "Quem é você?" ;
  • Autorização refere-se ao processo de determinar se um usuário tem permissão adequada para executar uma ação específica ou ler dados específicos, supondo que o usuário seja autenticado com êxito. Você pode pensar nisso como uma resposta à pergunta: "Um usuário pode fazer / ler isso?" ;
  • Princípio refere-se ao usuário autenticado no momento;
  • Autoridade concedida refere-se à permissão do usuário autenticado.
  • Função refere-se a um grupo de permissões do usuário autenticado.

Habilitando Segurança

Em um projeto Spring Boot Web você precisa somente incluir a dependência no pom.xml:

🔔 Atenção
Verifique a versão do Spring Boot considerando se seu projeto se econtra na versão 2.x.x ou 3.x.x
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
ℹ️ Quando você inclui esta dependência ao iniciar a aplicação, será solicitado um usuário e senha.

Cria uma classe confirme arquivo abaixo


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WelcomeController {
    @GetMapping
    public String welcome(){
        return "Welcome to My Spring Boot Web API";
    }
    
}

Acesse sua aplicação através do link: http://localhost:8080/, automaticamente o Spring Security irá te redirecionar para uma página de Login: http://localhost:8080/login.

ℹ️ E agora, qual é e onde está nossa credencial?

Default (Padrão)

O Spring Security, possui um usuário padrão chamado user e toda vez que sua aplicação é iniciada ele gera uma senha aleatória no console.

Using generated security password: 6950aa31-b730-4731-bf6a-82eac7fb78be

Autenticação Simples

O Spring possui algumas configurações para definir os usuários na sua camada de segurança.

Como sabemos por padrão o Spring Security habilita um usuário de nome user e gera uma senha aleatoriamente a cada inicialização. Para aplicações em produção esta não é uma abordagem um tanto aconselhável, e é por isso que vamos conhecer algumas outras configurações de segurança.

No application.properties

O Spring Security verifica se existe alguma configuração de segurança no arquivo application.properites.

spring.security.user.name=user
spring.security.user.password=user123
spring.security.user.roles=USERS
🔔 Atenção
Como houveram mudanças significativas da versão 2x para a 3x do Spring Boot, dividimos este tutorial de acordo com a sua versão selecionada