Skip to content

Aranjhonn/secure-api-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Secure API in Rust

Um projeto focado em aprendizado prático e construção de um backend robusto e seguro utilizando Rust! 🦀

📖 Sobre o Projeto

Este projeto nasceu como uma jornada de estudos para entender na prática como construir uma API REST completa utilizando o ecossistema moderno e assíncrono do Rust. O foco principal não é apenas fazer o código compilar, mas aprender como as coisas funcionam por baixo dos panos, lidando com banco de dados, criptografia, arquitetura e autenticação.

🛠️ Tecnologias Utilizadas

  • Rust: A linguagem base, garantindo segurança de memória e alta performance.
  • Axum: Framework web incrivelmente rápido e ergonômico, mantido pela equipe do Tokio.
  • SQLx: Toolkit puramente em Rust e assíncrono para interagir com o banco de dados (com checagem de queries em tempo de compilação!).
  • PostgreSQL: Nosso banco de dados relacional rodando via Docker.
  • Argon2: O algoritmo estado-da-arte para hash seguro de senhas.
  • jsonwebtoken (JWT): Para geração e validação de tokens de acesso seguros.

🚀 O Que Já Aprendemos e Implementamos

  • Estruturação modular de um projeto em Rust (separação inteligente de handlers, models, services, utils).
  • Conexão assíncrona e pool de conexões com PostgreSQL utilizando PgPool.
  • Criação e execução de Migrations seguras com o SQLx.
  • Tratamento de erros robusto contra falhas (evitando o pânico no servidor usando match).
  • Endpoint de Registro (POST /register) com hash Argon2.
  • Endpoint de Login (POST /login) com verificação de credenciais e geração de JWT assinado.

🚧 O Que Falta Para Completar (A Missão Atual!)

O projeto já está 90% funcional. Para fecharmos o ciclo e termos um backend digno de produção, o nosso desafio de aprendizado atual foca nos últimos 3 passos:

  • Descriptografia do Token: Criar a função verify_jwt para ler as Claims e checar a validade (exp) do token fornecido.
  • Middleware de Autenticação: Construir um Extractor customizado no Axum (FromRequestParts) que funciona como um "segurança de balada", barrando requisições sem tokens válidos e repassando a identidade do usuário para o sistema.
  • Rotas Protegidas: Criar um endpoint final (como GET /me) que exige o cabeçalho Authorization: Bearer <TOKEN> para provar que a porta foi trancada com sucesso.

⚙️ Como Rodar Localmente

  1. Certifique-se de ter o PostgreSQL rodando (exemplo via Docker):
    docker run --name rust-postgres-new -e POSTGRES_USER=rustuser -e POSTGRES_PASSWORD=rustpass -e POSTGRES_DB=rustdb -p 5433:5432 -d postgres
  2. Configure o arquivo .env na raiz do projeto com as suas chaves:
    DATABASE_URL=postgres://rustuser:rustpass@localhost:5433/rustdb
    JWT_SECRET=sua_chave_super_secreta_aqui
  3. Rode as migrações para construir a tabela de usuários:
    cargo sqlx database reset
  4. Inicie o servidor:
    cargo run
    (A API estará escutando no localhost:3000)

Feito com 🦀 Rust, suor e muita vontade de aprender!

About

Uma API de backend segura e de alta performance desenvolvida em Rust. Utiliza arquitetura web moderna com Axum, banco de dados PostgreSQL (SQLx), boas práticas de criptografia e Argon2 para hash de senhas e autenticação.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages