SDK de segurança JWT plug-and-play (Header ou HttpOnly Cookie)
Project description
'''
ITValleySecurity – Documentação Rápida
Um SDK de autenticação JWT plug-and-play para APIs Python, projetado para ser extremamente fácil de usar. Funciona com Header Bearer ou Cookie HttpOnly, sem que você precise escrever a lógica de JWT.
O SDK carrega automaticamente as configurações de um arquivo .env, então você não precisa chamar load_dotenv() no seu código.
1. Instalação
Instalação super simples - tudo incluído:
pip install itvalleysecurity
Pronto! O FastAPI e todas as dependências já vêm junto automaticamente.
2. Configuração de Ambiente
Crie um arquivo .env na raiz do seu projeto. A única variável obrigatória é a JWT_SECRET_KEY.
# OBRIGATÓRIO: Chave secreta com pelo menos 32 caracteres
JWT_SECRET_KEY=uma_chave_bem_grande_e_segura_com_mais_de_32_caracteres
# --- Opcionais (possuem valores padrão seguros) ---
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=15
JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
JWT_ISSUER=ITValley
# Origem do token: auto (padrão), bearer, ou cookie
EV_TOKEN_SOURCE=auto
# Política de validação do 'sub': any (padrão), email, ou uuid
EV_SUB_POLICY=any
Importante: Se a
JWT_SECRET_KEYnão for definida, o SDK lançará um erroValueErrorimediatamente para garantir que a aplicação não rode com uma configuração insegura.
3. Exemplo de Uso (FastAPI)
Este é um exemplo realista para um endpoint de login. O SDK cuida da emissão dos tokens e cookies; você só precisa focar na lógica de negócio (validar o usuário).
from fastapi import FastAPI, Response, HTTPException, status, Depends
from itvalleysecurity.fastapi import login_response, require_access
from itvalleysecurity.fastapi.payloads import LoginPayloadWithPassword
# --- Lógica da sua aplicação (exemplo) ---
def get_user_from_db(username: str):
# Implemente a busca do usuário no seu banco de dados
pass
def verify_password(plain_password: str, hashed_password: str) -> bool:
# Implemente a validação da senha (ex: com passlib)
return True
# --- Aplicação FastAPI ---
app = FastAPI()
@app.post("/login")
def login(body: LoginPayloadWithPassword, resp: Response):
# 1. Buscar usuário no banco
user = get_user_from_db(body.sub)
if not user or not verify_password(body.password, user.password_hash):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Usuário ou senha inválidos"
)
# 2. (Opcional) Validar regras de negócio
if user.status != "active":
raise HTTPException(status_code=403, detail="Usuário inativo")
# 3. Emitir tokens (o SDK faz o resto)
return login_response(
resp,
sub=user.id, # ou user.email
email=user.email,
set_cookies=True
)
# Rota protegida: basta adicionar a dependência
@app.get("/profile")
def get_profile(current_user = Depends(require_access)):
return {
"message": f"Bem-vindo, {current_user['sub']}!",
"user_details": current_user
}
4. Funções do Core (Uso sem FastAPI)
Você também pode usar o núcleo do SDK para gerar e validar tokens em qualquer aplicação Python.
from itvalleysecurity import issue_pair, verify_access
# Criar um par de tokens
pair = issue_pair(sub="user_id_123", email="user@example.com")
print("Access Token:", pair["access_token"])
# Validar um token de acesso
try:
claims = verify_access(pair["access_token"])
print("Token válido! Sub:", claims["sub"])
except InvalidToken as e:
print("Token inválido:", e)
Com isso, a segurança da sua API se torna simples e robusta. Basta configurar o .env uma vez e usar Depends(require_access) nas suas rotas.
'''
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file itvalleysecurity-0.1.0.tar.gz.
File metadata
- Download URL: itvalleysecurity-0.1.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3044f6a6fe727db1c0601c8a7fde9e98031cee7763aea68da29b580e14fc2582
|
|
| MD5 |
0c5e3818f50433086e832788c67793ec
|
|
| BLAKE2b-256 |
407ea8d4fa5491286ed0cf1ced6d3645799c938c886f27e64a0c2417cd079cff
|
File details
Details for the file itvalleysecurity-0.1.0-py3-none-any.whl.
File metadata
- Download URL: itvalleysecurity-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82cae433a28b7531346bf32ea9a4b85206b04c4080746bcd27a0783274547b40
|
|
| MD5 |
ce05bd901d500ff054db611f652b790a
|
|
| BLAKE2b-256 |
8df9772eec0ebf8cccb0bd1a868973d6ea86301efbb35f240b7116aaf3291529
|