Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Autenticación vs. autorización

14/30
Recursos

¿Cuál es la diferencia entre autenticación y autorización en las aplicaciones modernas?

El mundo del desarrollo de aplicaciones siempre busca crear sistemas más seguros y eficientes. Dos conceptos vitales en este contexto son autenticación y autorización, que muchas veces se confunden, pero tienen propósitos distintos. Entender estos conceptos te ayudará a construir aplicaciones que no solo sean robustas, sino que también protejan la integridad de los datos y la experiencia del usuario.

¿Qué es la autenticación?

La autenticación se centra en verificar la identidad del usuario. En términos sencillos, responde a la pregunta: "¿Quién eres?". Este proceso se encarga de validar si las credenciales proporcionadas (por ejemplo, nombre de usuario y contraseña) coinciden con las que están registradas en la base de datos.

  • Verificación de credenciales: El sistema revisa si las credenciales ingresadas son correctas.
  • Caducidad de credenciales: También comprueba si esas credenciales han caducado o están vigentes.
  • Acceso inicial: Una vez verificada, al usuario se le otorga una llave o token para acceder al sistema.

Un ejemplo práctico que todos conocemos es cuando ingresamos a una cuenta de correo electrónico; necesitas introducir tu usuario y contraseña, y solo después de la validación, obtienes acceso a tu bandeja de entrada.

¿Qué es la autorización?

Por otro lado, la autorización se refiere a los permisos y roles dentro de un sistema, y responde a la pregunta: "¿Qué puedes hacer?". Una vez autenticado, este proceso decide qué acciones está permitido que realice un usuario.

  • Gestión de permisos: Basado en roles predefinidos (ej. administrador, usuario estándar), se otorgan ciertos privilegios.
  • Acceso a recursos: Determina qué partes del sistema el usuario puede o no acceder, como crear productos, cambiar configuraciones, o acceder a determinadas características.

Para visualizarlo, imagina que al entrar a un edificio necesitas identificarte (autenticación) para entrar. Sin embargo, necesitarás permisos específicos (llaves especiales) para acceder a ciertas áreas restringidas (autorización).

¿Cómo se gestionan la autenticación y la autorización en sistemas modernos?

Con la evolución tecnológica, la gestión de autenticación y autorización ha avanzado significativamente, utilizando tecnologías como JSON Web Token (JWT).

¿Qué es JSON Web Token y cómo funciona?

Los JSON Web Tokens son una tecnología de autenticación y autorización que utiliza un enfoque sin estado (Stateless). Esto significa que no se mantiene una sesión activa en el backend, lo cual habilita la escalabilidad de las aplicaciones.

  • Token como llave: Los JWT actúan como "llaves" que almacenan la información de los permisos y la autenticación.
  • Escalabilidad y robustez: Facilitan la distribución de sistemas, permitiendo que las sesiones de usuario se gestionen más eficientemente.
  • Independencia del backend: Al no depender de una sesión en el backend, los JWT ofrecen flexibilidad y seguridad adicional en la gestión de usuarios.

Para los desarrolladores, implementar JWT puede significar una manera sencilla y segura de gestionar tanto la autenticación como la autorización, lo que es especialmente útil en aplicaciones que crecientemente requieren un control de acceso más preciso y seguro sin sacrificar la experiencia del usuario.

Incorporar y entender apropiadamente los conceptos de autenticación y autorización es esencial para el desarrollo de aplicaciones seguras y eficaces. Al aprender a separarlos y gestionarlos de manera independiente y adecuada, estarás preparado para crear sistemas más robustos y seguros. ¡Adéntrate en este apasionante mundo y sigue perfeccionando tus habilidades de desarrollo!

Aportes 12

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Autenticación

Este proceso es para determinar si la combinación de usuario y contraseña son las correctas.

  • Si es correcta:
    • Nos dan una llave para acceder, (en este curso esa llave será un token generado por la librería jsonwebtoken )
  • Si NO es correcta:
    • El servidor nos prohibe continuar y lo normal es que nos responda con un código http 401 que significa Unauthorized (veamoslo con gatos xD)

Autorización

Es cuando el servidor ya verificó que la contraseña y usuario son correctas y se le devolvió correctamente al usuario un token (la llave) pero se quiere usar esa llave para entrar a una parte del sitio prohibido para ese usuario, esto puede suceder cuando:

  • El usuario no es administrador y quiere acceder a una página sólo para admistradores (petición get) .
  • El usuario quiere realizar una petición tipo delete/post/put a un recurso pero sólo tiene permisos de lectura ese usuario.

Lo normal es que el servidor responda con status code 403 cuando esto sucede

En lo personal siento que la imagen del 401 debería estar en la del código 403 porque representa mejor que el gato tiene prohibido entrar a la tienda.

Quizá en la imagen de 401 lo que debería ir es un gato sosteniendo una identificación con su nombre y foto entregandola a otro gato para entrar a un lugar donde la puerta tenga un letrero que diga “only local cats”. Jaja no sé, si alguna vez un diseñador ve este mensaje, traten de enviar un diseño con una solicitud a la página por favor xD.

En pocas palabras
Autenticación: Quien eres
Authorizacion: Los permisos que tienes

  • Autenticación se refiere a verificar quién eres y se encarga de revisar si puedes o no ingresar a tus credenciales.
  • Autorización gestiona los permisos, protege endpoints.

Autenticación se refiere a quien eres.
Autorización se refiere a la gestión de permisos, como protegemos ciertos endpoints de acuerdo al rol o los permisos que querramos dar.

JWT: Json Web token, es una tecnología funciona de modo stateless, quiere decir que no hay una sesión como tal del lado del backend sino que todo va a estar por medio de un token, esto es interesante porque funciona para poder escalar el login del usuario para cuando queramos hacer sistemas distribuidos.

Un aporte extra.
Para que exista la autorización, debe existir previamente una autenticación.

Para este curso usaremos Json Web Token (JWT)

La autenticación y la autorización son dos conceptos clave en el desarrollo de aplicaciones. * **Autenticación**: Se refiere a verificar la identidad del usuario. Utiliza credenciales (como usuario y contraseña) para confirmar que el usuario es quien dice ser. * **Autorización**: Una vez que el usuario está autenticado, la autorización determina qué recursos o acciones puede realizar. Esto se basa en roles y permisos asignados al usuario. Ambos procesos son esenciales para la seguridad de una aplicación.

Autenticación: login - credenciales - token ( llave admin - user)
Autorización: permisos - protección

JWT: token ( sesión )

Buena explicacion
Lo resumiría así: Autenticación = Quien eres Autorizarión = a que tienes acceso

Autenticación sería como mostrar tu tarjeta de identificación para demostrar que eres realmente tú.

Autorización es como determinar qué permisos tienes una vez que estás dentro.

JWT (JSON Web Token) es como un pase que llevas contigo una vez que has sido autenticado. Este pase contiene información sobre quién eres y qué puedes hacer. Es útil porque es fácil de utilizar y contiene la información necesaria para la autorización sin tener que preguntar al servidor cada vez.

La propiedad stateless de JSON Web Tokens (JWT) significa que cada token contiene toda la información necesaria para su verificación, eliminando la necesidad de almacenar estado adicional en el servidor. Esto simplifica la gestión de sesiones, reduciendo la carga en el servidor y facilitando la escalabilidad. Además, al ser independiente del servidor, JWT es compatible con arquitecturas distribuidas y contribuye a un rendimiento eficiente al permitir que cada servicio verifique la validez del token de manera autónoma.

Autenticación: Es quien eres.
Autorización: Es lo que puedes hacer (lo que estás autorizado a hacer, lo que tienes permiso de hacer).