Hay dos tipos principales, diría yo, de un sistema moderno de autorización. El primero es el que mencioné anteriormente, que es el sistema Zanzibar de Google, donde en lugar de poner roles o reducir todo a un atributo, haces algo llamado Reback o control de acceso basado en relaciones, donde todo está en forma de una relación. Así que un usuario tiene una relación con un archivo, un archivo tiene una relación con una carpeta, y tú calculas permisos basados en eso. Hay tres que puedo recomendar de su código abierto, como SpiceDB, OpenFG, y Permafy. Trabajo en SpiceDB, así que, por supuesto, voy a tener un sesgo hacia eso.
Y el segundo tipo es un punto de decisión de política o un motor de políticas, donde tu autorización es un problema lógico que se resuelve evaluando una política. Así que si algo pasa esa política, obtienes un sí. Y nuevamente, algunos populares incluyen Open Policy Agent, CDER, y CERBOS. Diría que si tienes algo que tiene muchos datos y jerarquías y cambia frecuentemente, incluyendo cosas como AI y agentes, etcétera, opta por un sistema Zanzibar. Si quieres algo donde toda la información esté en la propia llamada de solicitud, iría por un motor de políticas.
La idea, por supuesto, es que estás intercambiando algo que es relativamente simple, como un JWT, y que es sin estado, por algo que podría ser un poco más complejo de implementar al principio, pero estás obteniendo corrección, flexibilidad y, lo más importante, seguridad, lo cual no puedo enfatizar lo suficiente, es tan importante ahora mismo. Hay momentos en los que puedes usar JWTs cuando tienes una concesión no revocable de una sola vez, como por ejemplo un enlace de verificación de correo electrónico o un enlace de descarga que expira en un día o lo que sea. Pero para casos de uso en producción como una decisión de autorización de una aplicación de larga duración, o cualquier cosa de grano fino, evitaría absolutamente usar JWTs.
Ahora sé que tienes muchas preguntas sobre cosas como tokens de actualización y almacenar cosas localmente y todo eso. No tengo tiempo para cubrir eso, pero ese primer enlace que puse allí, que tiene este diagrama de flujo, cubrirá todas tus preguntas sobre el uso de JWTs para permisos de grano fino. Un par de otras cosas que también puedes leer para aprender más sobre este tema. Me encantaría conectarme contigo en LinkedIn y espero que disfrutes el resto de la conferencia. Y recuerda, no uses JWTs para permisos de grano fino. Disfruta y que tengas un gran día. Adiós.
Comments