Desenvolvimento de Software Através de Frameworks
Desenvolvimento de Software Através de Frameworks
Desenvolvimento de Software Através de Frameworks
através de Frameworks
Engenharia DevOps
Adriano Neres
Ementa
• Fundamentos de Frameworks
• Frameworks Backend e Frontend
• Frameworks de suporte ao desenvolvimento de aplicações Web
• Frameworks de suporte ao desenvolvimento de APIs de serviço
• Frameworks de suporte à persistência de dados
Sobre o professor
Adriano Neres
https://github.com/adrianoneres/biblioteca-ifmt
Frameworks
• Obriga o desenvolvimento da
solução completa, sem
implementações base que auxiliem
no processo.
fi
Backend
• Pode ser implementado com o uso de ferramentas como Java, C#, Python,
Ruby, Node.js, etc.
fi
REST
Representational State Transfer
• Java
• Editor de código ou IDE de sua preferência (Visual Studio Code, Intellij IDEA, etc.)
• Rest Client (Insomnia, Postman, etc.)
• Navegador (Chrome, Edge, Firefox, etc.)
• Extensões do Visual Studio Code: Extension Pack for Java, Gradle for Java, Maven
for Java, Java Code Generators, Spring Boot Dashboard, Spring Boot Extension
Pack.
Conceitos fundamentais
• Tipos de variáveis
• Métodos
• Encapsulamento
• Programação Orientada a Objetos
• Método construtor
• Sobrecarga
• Herança (de classe e de interface)
• Sobrescrita
• Polimor smo
fi
Tipos de variáveis
Primitivos
nome
• byte: 0
• short: 0
• int: 0
• long: 0L
• oat: 0.0f
• double: 0.0d
• boolean: false
• char: ‘\u0000’
fl
Métodos
Orientação a objetos
Orientação a objetos
objetos
🚗
🚕
classe
🚙
🚒
Orientação a objetos
objetos
🎂
🥮
📝 🥧
classe
🧁
Método construtor
Classes
• Referência: https://www.httpstatus.com.br/
Validações de entrada
Corpo da requisição
• Erros estão fora de nosso controle e, por isso, não podemos tratá-los.
fi
fi
Erros x Exceções
• Erros representam falhas não recuperáveis, problemas graves que não podemos
tratar.
• geeksforgeeks, 2023.
Tipos de Exceções
Tipos
• geeksforgeeks, 2023.
Tratamento de exceções específicas
Argumentos inválidos
• Em muitos casos precisamos lidar com Exceções especí cas de bibliotecas que
adicionamos ao nosso projeto. Um exemplo são as validações de argumentos, que
lançam uma exceção do tipo MethodArgumentNotValidException.
fi
Internacionalização
• geeksforgeeks, 2023.
Segurança
• Como esta arquitetura utiliza o protocolo HTTP, que por padrão é stateless, toda
requisição deve conter toda a informação necessária. Por isso, é comum utilizar a
estratégia de geração e manutenção de tokens.
fi
Segurança
Autenticação por sessão
• Alura, 2023.
Segurança
Autenticação por sessão
• Alura, 2023.
Segurança
Autenticação por token
• Os dados da “sessão" são mantidos internamente no token, que será enviado pelo
cliente à cada requisição.
• Uma vez gerado, o token é devolvido ao cliente, que deverá mantê-lo. Nenhuma
informação do token é armazenada no servidor e sua validação posterior é feita
com base em sua assinatura.
fi
JWT
JSON Web Token
cabeçalho.payload.assinatura
• O cabeçalho é composto por duas partes: o tipo de algoritmo utilizado e o tipo de token,
que no nosso caso será JWT.
• O payload contém os atributos de nidos pelo usuário no momento de sua criação (claims),
além de alguns dados como o criador (issuer), data de expiração (expiration time), etc.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFt
ZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.S KxwRJSMeKKF2QT4fwpM
eJf36POk6yJV_adQssw5c
fl
Autenticação com SpringBoot
• Adicionar bibliotecas
• Con gurar o projeto
• De nir a entidade referente aos usuários e criar seu repositório
• Criar um serviço que mantenha a lógica de autenticação
• Criar um controller para receber as chamadas referentes à segurança
• Criar um serviço que mantenha a lógica do Token JWT
fi
fi
Autenticação com SpringBoot
Instalação das bibliotecas
• Java JWT
Autenticação com SpringBoot
Con gurações do projeto
• Crie uma classe de con gurações que “ensine" o Spring Boot qual o codi cador
de senhas e qual o gerenciador de autenticação ele utilizará.
• É interessante notar que este método não será utilizado explicitamente pela nossa
implementação, mas o Spring Boot irá utilizá-lo internamente para obter o usuário
pelo login quando necessário.
Autenticação com SpringBoot
Controller de segurança
fi
Autenticação com SpringBoot
Serviço de criação do Token
• Quando con guramos o Spring Boot Security de nimos que todas as requisições para /seguranca
seriam permitidos sem autenticação, já requisições à quaisquer outros contextos exigiriam
autenticação.
• Para que a API possa validar a autenticação do usuário precisaremos enviar o token em cada
requisição.
• No cliente, precisaremos garantir esta informação seja sempre enviada. É bastante comum que o token
seja enviado no cabeçalho Authorization das requisições, geralmente precedido da palavra Bearer.
• Na servidor, precisaremos criar um ltro que valide o token, crie o objeto de autenticação e repasse ao
Spring Boot. Desta forma, quando o Spring checar se a requisição foi autenticada ele terá todos os
dados necessários para esta validação.
fi
fi
fi
Cliente
req
resp
API
Filtro de Autenticação
Controller
Autenticação com SpringBoot
Service
Repository
BD
Autenticação com SpringBoot
Interceptando exceções lançadas por ltros