Autenticación vs. autorización

2/20
Recursos

Aportes 10

Preguntas 1

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)

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

JWT: token ( sesión )

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