Salta al contingut
← Tornar al blog
2 min ca

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
Revocar un token sense haver d'enderrocar la sessió sencera

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.