iurban/stable/: iurban-auth-0.1.0 metadata and description
SDK de integración con Keycloak para microapps FastAPI de iUrban (validación JWT stateless)
| author_email | iUrban <dev@iurban.es> |
| description_content_type | text/markdown |
| metadata_version | 2.4 |
| requires_dist |
|
| requires_python | >=3.12 |
Because this project isn't in the mirror_whitelist,
no releases from root/pypi are included.
| File | Tox results | History |
|---|---|---|
iurban_auth-0.1.0-py3-none-any.whl
|
|
|
iurban_auth-0.1.0.tar.gz
|
|
iurban-auth (Python / FastAPI)
SDK de integración con el Keycloak central de iUrban para microapps FastAPI. Implementa el patrón decidido en ADR-001 (addendum 2026-06-06): validación de JWT stateless contra la JWKS de Keycloak — sin llamada en runtime a ningún servicio de auth.
Idea
from fastapi import FastAPI, Depends
from iurban_auth import current_user, require_roles, CurrentUser
app = FastAPI()
@app.get("/me")
async def me(user: CurrentUser = Depends(current_user)):
return {"sub": user.sub, "tenant": user.tenant_id, "roles": user.roles}
@app.get("/admin", dependencies=[Depends(require_roles("admin"))])
async def admin_only():
return {"ok": True}
Config (pydantic-settings, vía env)
| Env | Qué | Ejemplo |
|---|---|---|
IURBAN_OIDC_ISSUER |
URL del realm Keycloak | https://auth.iurban-lab.es/realms/iurban |
IURBAN_OIDC_AUDIENCE |
audience esperado (client_id) | crm-api |
IURBAN_OIDC_JWKS_TTL |
cache de la JWKS (s) | 3600 |
Multi-tenant
El claim tenant_id (o tenant) se expone en CurrentUser.tenant_id para casar con la
RLS de Postgres de las microapps (ADR-004). El mapeo claim→roles locales lo hace cada app
(Opción A del ADR-001: Keycloak autentica, la app autoriza).
Estado
Scaffold. Falta: tests contra un Keycloak de pruebas, manejo de kid rotado, y publicación
al índice privado (o install desde git-tag).