Revocar un token sense haver d'enderrocar la sessió sencera
BinCat és un SDK de Python per emetre, validar i revocar tokens Fernet i JWT amb registre d'auditoria, amb un panell al damunt per fer-ho sense escriure codi.
- python
- criptografia
- jwt
- seguridad
- tokens
- sdk
Una petició que he vist repetir-se: revocar l'accés d'un token concret sense forçar tothom a tornar-se a autenticar. Moltes implementacions casolanes de tokens no deixen marge per a això: o el JWT és vàlid fins que caduca per si sol, o cal invalidar la sessió sencera. BinCat va néixer de resoldre just això: emetre, validar i revocar tokens de manera individual, amb registre de cada operació.
Dos tipus de token, cadascun per al seu cas
Fernet, de la llibreria cryptography, per a xifratge simètric quan el mateix sistema emet i valida. JWT signats criptogràficament amb claims amb estat, per a quan el token viatja entre serveis diferents. Els intervals d'expiració es configuren des de l'API o des del panell, i qualsevol token individual es pot revocar a l'instant sense tocar els altres, que és la diferència davant de dependre només de l'expiració natural.
Què porta el paquet
- Un SDK de Python que s'integra directament en una aplicació existent.
- Un panell d'una sola pàgina, tema fosc, amb recompte de tokens totals, actius, revocats i expirats, i una consola de logs que traça l'activitat a mesura que passa.
- Una API REST amb sis endpoints: generar, validar, revocar, purgar i consultar el log de les últimes cinquanta operacions.
- Registre a SQLite de cada emissió, validació i revocació, per poder respondre després qui tenia accés i quan va deixar de tenir-ne.
La clau de xifratge no es toca a mà
Si BinCat no troba cap clau a .env en arrencar, en genera una de criptogràficament segura pel seu compte. És la mateixa lògica que aplico a Password Sentinel: com menys depèn la seguretat que algú recordi configurar alguna cosa bé, menys maneres hi ha que es quedi mal configurada. Si una clau es filtra, el procediment és simple: esborrar .env, deixar que se'n generi una de nova, i reemetre els tokens que estaven xifrats amb l'anterior. No hi ha rotació màgica que salvi aquest pas: cal reemetre.
Els tests corren contra una base de dades SQLite aïllada, així que mai toquen la de desenvolupament ni arrosseguen estat entre execucions.