25 puntos por GN⁺ 2024-05-28 | 8 comentarios | Compartir por WhatsApp
  • 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

 
savvykang 2024-05-29

Entre desarrolladores, es razonable usar authn y authz en lugar de auth, y usar login y permission en documentación o en controladores/fachadas que tienen contacto con los usuarios. Pero no creo que sea necesario eliminar también authn y authz.

 
gcback 2024-05-29

Como se señala en el texto, auth se 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.

 
nemorize 2024-05-28

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.

 
koxel 2024-05-28

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...

 
namarie32ilu 2024-05-28

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.

 
iolothebard 2024-05-28

¿No se usa precisamente auth para combinar ambas cosas a propósito?

 
kuber 2024-05-28

Existen authentication y authorization, así que ¿por qué usar específicamente...

 
GN⁺ 2024-05-28
Opiniones de Hacker News
  • "Authorize" y "Authenticate" son excelentes palabras usadas desde la Edad Media. El significado de ambas no ha cambiado mucho.
  • Estas dos palabras tienen una distinción importante en los sistemas criptográficos. Cambiar los términos para reducir la confusión no parece que vaya a ayudar.
  • La afirmación de que el nombre "auth" causa confusión no resulta muy convincente. Cambiar la palabra no parece que vaya a resolver el problema.
  • Es buena idea usar las abreviaturas "authn" y "authz". Pero también está bien usar las palabras completas.
  • "Identity" y "Access" Management (IAM) son términos estándar. Personalmente prefiero el término "authnz".
  • "Login" no incluye la autenticación basada en tokens o claves. Las cuentas de servicio no inician sesión, pero sí requieren autenticación y autorización.
  • La distinción entre Authn y Authz no siempre es clara. A veces parece que se prefieren términos que suenan bien antes que términos claros.
  • Nunca ha habido problema en usar el término "auth" en sistemas IAM. Cuando se necesita algo más específico, basta con usar la expresión adecuada.
  • "login" y "permissions" no capturan todo el significado ni la complejidad del sistema. La autenticación implica más que solo iniciar sesión.
  • La autenticación y la autorización están estrechamente relacionadas. No es posible autorizar sin autenticar.
  • "Login" no es un buen sustituto de autenticación. Hay casos en los que la autenticación no requiere inicio de sesión.
  • "auth" puede referirse tanto a autenticación como a autorización. Esto se debe a que ambos conceptos suelen usarse juntos.
  • Autenticación y autorización son términos estándar en TI y seguridad de la información. Para evitar confusión, conviene usar las palabras completas.
  • "authn" y "authz" son perfectamente utilizables entre personas técnicas. Para el público general, es mejor usar "login" y "permissions".
  • En la vida real también existen conceptos similares. Por ejemplo, una credencial de trabajo verifica la identidad y concede acceso.
  • Autorización y permisos no son lo mismo. Los permisos son derechos o privilegios que no están asignados a un usuario específico.
  • La autorización puede tener dos significados. El proceso de otorgar a un usuario permiso para realizar una acción específica y el proceso de verificarlo.
  • "access control" puede referirse al control de acceso en tiempo de ejecución. Es lo que hace la aplicación después de autenticar al usuario.
  • "authN" y "authZ" son suficientemente adecuados y bien entendidos. La autorización siempre está relacionada con vincular permisos con un usuario.