API com autenticação JWT, 2FA e testes automatizados.
Este projeto ainda está em desenvolvimento. Testes adicionais, ajustes de funcionalidades e melhorias na cobertura de código estão previstos para as próximas atualizações.
Esta API é uma aplicação backend desenvolvida com o framework NestJS e TypeScript. Este projeto foi criado como parte de um portfólio para demonstrar habilidades em desenvolvimento de APIs seguras, autenticação JWT, 2FA (autenticação de dois fatores) e boas práticas de arquitetura de software.
- Login e registro de usuários.
- Geração e validação de tokens de acesso e refresh tokens.
- Geração de QR Code para 2FA.
- Validação de segredos 2FA.
- Registro de novos usuários.
- Validação de e-mails e senhas.
- Cookies HTTP-only para refresh tokens.
- Suporte a
cookie-parserpara manipulação de cookies.
- Separação de responsabilidades com uso de módulos, serviços, controladores e casos de uso.
- Repositórios para abstração de acesso a dados.
- Framework: NestJS
- Linguagem: TypeScript
- Banco de Dados: Prisma ORM com suporte a PostgreSQL
- Autenticação: Passport.js com estratégias JWT
- Validação: Zod
- Segurança:
cookie-parser- Middleware para proteção de rotas
- Testes: Jest (unitários e de integração)
- Outras Dependências:
qrcodepara geração de QR Codes@nestjs/configpara gerenciamento de variáveis de ambiente
- Node.js (v18 ou superior)
- PostgreSQL
- npm ou yarn
-
Clone o repositório:
git clone https://github.com/felipeoj/API_Auth.git cd API_Auth -
Instale as dependências:
npm install
-
Configure as variáveis de ambiente: Crie um arquivo
.envna raiz com:DATABASE_URL=postgresql://user:password@localhost:5432/securedb JWT_SECRET=seu_jwt_secret JWT_REFRESH_SECRET=seu_refresh_jwt_secret
-
Configure o Prisma:
npx prisma generate npx prisma migrate dev
-
Inicie o servidor:
- Modo de desenvolvimento:
npm run start:dev
- Modo de produção:
npm run start:prod
- Modo de desenvolvimento:
-
Acesse a API:
http://localhost:3000
POST /auth/signup– Registra novo usuário
{
"email": "user@example.com",
"firstName": "teste",
"lastName": "testeJr",
"password": "senha123",
"username": "usuario"
}POST /auth/login– Realiza login
{
"identifier": "user@example.com ou username",
"password": "senha123"
}POST /auth/refresh– Gera novo token com refresh token
-
POST /auth/2fa/enable
Habilita a autenticação de dois fatores para o usuário atual.
Não requer corpo na requisição. -
POST /auth/2fa/verify
Valida o código 2FA enviado pelo usuário.
Exemplo de body:{ "code": "123456" }
-
Testes unitários:
npm run test -
Testes de integração:
npm run test:e2e
-
Cobertura de testes:
npm run test:cov
- Cookies HTTP-only: tokens de refresh armazenados em cookies protegidos.
- Validação de Dados: entradas validadas com Zod.
- Autenticação JWT: tokens para proteger rotas.
Este projeto está licenciado sob a licença MIT.
- Nome: Felipe Oliveira
- LinkedIn: (https://www.linkedin.com/in/felipeoj/)