- El término "auth" tiene dos significados: autenticación (authentication) y autorización (authorization)
- Esto genera confusión en los nombres de librerías o paquetes
- Los términos "authn" y "authz" no son claros y son difíciles de entender
Diferencia entre autenticación y autorización
- Autenticación (authentication): el proceso de verificar quién es el usuario
- Autorización (authorization): el proceso de determinar qué puede hacer el usuario
- Ambos conceptos son distintos, y resolver uno no significa que el otro quede resuelto
Propuesta de usar "permissions" y "login"
- Se propone distinguir con claridad la autenticación como "login" y la autorización como "permissions"
- "login" puede usarse tanto como sustantivo como verbo
- Sustantivo: la información que se ingresa para acceder al sistema
- Verbo: la acción de iniciar sesión para usar el sistema
- "permissions" se usa como sustantivo, y en forma verbal se sugiere usar "check permissions"
Ventajas de usar términos más claros
- Personas de otras áreas, además de la ingeniería de software, pueden entenderlo fácilmente
- Permite una mejor abstracción
- Se puede diseñar separando autenticación y autorización en módulos distintos
Opinión de GN⁺
- Importancia de usar términos claros: cuando la terminología es clara, la comunicación fluye mejor y se reducen los malentendidos.
- Ventajas de la abstracción: separar autenticación y autorización hace que el diseño del sistema sea más flexible y más fácil de mantener.
- Ejemplos de otros términos: además de "login" y "permissions", también podría considerarse un término como "access control".
- Consideraciones al adoptar nueva terminología: al introducir nuevos términos, hace falta suficiente discusión y acuerdo dentro del equipo.
- Proyectos relacionados recomendados: proyectos representativos que separan autenticación y autorización incluyen OAuth y OpenID Connect.
8 comentarios
Entre desarrolladores, es razonable usar
authnyauthzen lugar deauth, y usarloginypermissionen documentación o en controladores/fachadas que tienen contacto con los usuarios. Pero no creo que sea necesario eliminar tambiénauthnyauthz.Como se señala en el texto,
authse usaba de forma ambigua para referirse tanto a autenticación como a permisos, así que sí resultaba confuso. Separarlo con términos más generales para facilitar la comunicación con personas de otros ámbitos además de los desarrolladores me parece un intento deseable.Si el problema es que tanto Authentication como Authorization pueden abreviarse como Auth,
como se mencionó en el texto, parecería que con Authn y Authz sería suficiente...
Y si aun así se considera que eso no es claro, tampoco estaría mal desarrollarlo un poco más como Authenty y Authory.
Los sistemas de permisos también tienen formato de permisos y formato ACL, entonces, ¿cómo se supone que habría que distinguirlos..?
Se siente algo forzado...
Supongo que quizá es un intento de reducir el costo de comunicación con miembros del equipo que no desarrollan, pero se pasa un poquito.
¿No se usa precisamente
authpara combinar ambas cosas a propósito?Existen authentication y authorization, así que ¿por qué usar específicamente...
Opiniones de Hacker News