Exemplo Prático
Spring Security é apenas um grupo de filtros de servlet, que ajudam você a adicionar autenticação e autorização ao seu aplicativo da web.
Devido às grandes mudanças do Spring nas versões 2x, 3x e agora 4x. As configurações de segurança do Spring Security sofrerem algumas revisões que resumimos em projeto de demonstração disponível em nosso github: https://github.com/izatecbr/aula-spring-security
Desvendando Spring Security

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:
Verifique a versão do Spring Boot para que possa seguir este nosso tutorial
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
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.

Cria uma classe exemplo para disponibilizar o nosso primeiro recurso HTTP
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";
}
}
Autenticação 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-SENHA-ALEATORIA

Primeira autenticação.
Após inserir realizar o login e deverar obter uma mensagem semelhante a esta.

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
Conteúdo Avançado
Link do projeto: https://github.com/izatecbr/aula-spring-security