Implementação de Autenticação e Autorização com fastapi-guard

Visão Geral da Solução

O fastapi-guard surge como uma biblioteca open source desenvolvida em Python, focada em simplificar a implementação de mecanismos de segurança dentro do ecossistema FastAPI. Seu objetivo principal é abstraer a complexidade envolvida na gestão de login e controle de acesso, permitindo que desenvolvedores integrem proteção às suas rotas com menor esforço.

Stack Tecnológica e Dependências

Para operar corretamente, este módulo depende de várias ferramentas consolidadas no mercado:

  • FastAPI: Framework web assíncrono para construção de APIs de alta performence.
  • SQLAlchemy: ORM utilizado para gerenciar a persistência de dados e modelos de usuário.
  • Passlib: Biblioteca responsável pela criptografia e hash de senhas.
  • PyJWT: Implementação para criação e validação de tokens JSON Web Tokens.

Guia de Instalação e Configuração

Antes de iniciar a integração, verifique se o ambiente possui Python 3.6+ e o gerenciador pip configurados.

1. Instalação dos Pacotes

Primeiramente, instale o framework web e o servidor ASGI:

pip install fastapi uvicorn

Em seguida, adicione a biblioteca de segurança ao projeto:

pip install fastapi-guard

2. Estruturando a Aplicação

Crie um arquivo principal, por exemplo, app.py. A inicialização deve importar o gerenciador de segurança e configurar o middleware globalmente.

from fastapi import FastAPI
from fastapi_guard import GuardManager

api_instance = FastAPI()
security_engine = GuardManager()

api_instance.add_middleware(security_engine.middleware)

@api_instance.get("/index")
async def home_endpoint():
    return {"status": "online", "msg": "Bem-vindo"}

3. Modelagem de Dados e Banco

É necessário estabelecer a conexão com o banco de dados e definir o schema dos usuários utilizando SQLAlchemy, conforme a arquitetura do seu sistema.

4. Protegendo Rotas

Para restringir o acesso a endpoints específicos, utilize os decoradores fornecidos pela instância de segurança. Isso força a validação do token antes da execução da função.

@api_instance.get("/dados-restritos")
@security_engine.require_auth
async def secure_data_endpoint():
    return {"info": "Acesso permitido apenas para usuários autenticados"}

5. Executando o Servidor

Finalmente, inicei o servidor de desenvolvimento com recarregamento automático:

uvicorn app:api_instance --reload

Ao acessar o endpoint protegido, o sistema exigirá credenciais válidas para liberar o conteúdo.

Tags: FastAPI fastapi-guard Python jwt SQLAlchemy

Publicado em 10-3 01:03