Módulo especifico do Spring para tratar segurança em aplicações.
Objetivos
Autenticação
Autorização (controle de acesso)
Proteção contra ataques (CSRF, clickjacking, etc)
Autenticação em aplicações web (Statefull) é diferente de autenticação em API REST (Stateless). Em uma aplicação, a autenticação é feita através de sessões, que guardam informações sobre o usuário, que são mantidas pelo servidor, Porém, em uma API REST, isso não ocorre, já que um dos conceitos REST é ser Stateless.
Existem várias formas de realizar o processo de autenticação de uma API, entretanto, uma das mais populares é através de Tokens. Neste curso, é abordado o JWT (JSON Web Tokens) para gerenciar os Tokens.
Essa estratégia funciona da seguinte forma: Após o cliente fazer uma requisição para uma URL de autenticação, caso as credenciais estejam corretas, é gerado um Token e enviado para o cliente na resposta.
No processo de Autorização, este Token é utilizado. Em todas as requisições feita pelo cliente, o Token deve ser enviado no header da requisição. Desta forma, a aplicação consegue verificar a validade do token e liberar ou não o serviço.
UserDetailsService
Classes que implementam esta interface são reconhecidas como classes de autenticação pelo Spring. Além disso, implementando esta interface, a classe não precisa ser chamada em nenhum controler, já que o Spring ficará responsável por isso.
Configurações de segurança