Repositório do Workshop de melhores práticas usando JWT.
Na branch complete
você encontra a versão final do projeto feita durante o workshop.
Este projeto foi desenvolvido em um Mac, mas acredito que tudo rode em Linux, e no Windows com algumas modificações em alguns comandos.
Este projeto consiste de uma API feita em Node.js que consome um banco PostgreSQL. Há um arquivo .nvmrc
no projeto caso queira realizar a instalação usando o nvm.
O arquivo que possui o uso das libs do JWT em si, é o src/services/token.js
Para rodar o projeto é necessário rodar um banco Postgres, sugiro o uso do docker. Pode ser usado o seguinte comando:
docker run --name db-jwt-example -p 5432:5432 -e POSTGRES_PASSWORD=password -d postgres
Caso queira rodar em outro local, lembre-se de editar a url no arquivo config/database.js
.
O próximo passo é instalar as depêndencias:
npm install
Depois é necessário rodar a migration para criar as tabelas no banco:
npm run sequelize:migrate
E então pode-se rodar com nodemon:
npm run dev
Para facilitar os testes dos endpoints, pode ser usado o arquivo JWT.postman_collection.json
openssl genrsa -out private-key.pem 2048
openssl rsa -in private-key.pem -pubout -out public-key.pem
Caso queira usar chaves previamente geradas, copie o arquivo .env.example
para o arquivo .env
. Mas lembre-se: Não use essas chaves em produção, apenas para teste.
Qualquer dúvida/problema referente ao projeto, sinta-se livre para abrir uma issue no projeto que eu vou responder assim que possível.
Escrevi um artigo em que falo de alguns conceitos abordados no workshop, ele pode ser acessado clicando aqui.
- jwt.io - Debugger e referências sobre JWT (em inglês)
- Melhores práticas ao usar JWT (em inglês)
- RFC do JWT (em inglês)
- Claims do JWT - Aqui você encontra as reserved claims com breves explicações e também as do - OpenID Connect Standard Claims