Autenticación de usuario con JWT, OAUTH2 y FASTAPI
En el mundo de la programación web, la autenticación de usuario es un aspecto fundamental para garantizar la seguridad de las aplicaciones. En este artículo, exploraremos la forma de autenticar usuarios utilizando JWT, OAUTH2 y FASTAPI, así como la protección de rutas en FASTAPI con JWT.
¿Qué es JWT?
JSON Web Token (JWT) es un estándar abierto (RFC 7519) que define un formato compacto y autocontenido para la transmisión segura de información entre las partes como un objeto JSON. JWT se utiliza para autenticar usuarios y transmitir información de manera segura entre el cliente y el servidor.
¿Qué es OAUTH2?
OAUTH2 es un protocolo de autorización que permite a aplicaciones de terceros obtener acceso limitado a los recursos de un usuario en un servidor. OAUTH2 se utiliza para permitir que una aplicación obtenga acceso a la información del usuario sin revelar credenciales de usuario.
¿Qué es FASTAPI?
FASTAPI es un marco web moderno y de alto rendimiento para la creación de API en Python. Ofrece una sintaxis intuitiva y rápida, así como una gran cantidad de características de seguridad integradas para proteger las aplicaciones web.
Protección de rutas en FASTAPI con JWT
FASTAPI ofrece integración con JWT para proteger las rutas de la aplicación. Esto se puede lograr utilizando el middleware incluido en FASTAPI para verificar la validez de los tokens JWT antes de permitir el acceso a una ruta protegida.
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
from typing import Optional
app = FastAPI()
# Token URL for OAUTH2
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# Secret key for JWT
SECRET_KEY = "mysecretkey"
ALGORITHM = "HS256"
# Función para verificar la validez del token JWT
def get_current_user(token: str = Depends(oauth2_scheme)):
credentials_exception = HTTPException(status_code=401, detail="Invalid token")
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise credentials_exception
token_data = TokenData(username=username)
except JWTError:
raise credentials_exception
return token_data
En el ejemplo de código anterior, se muestra cómo utilizar el middleware de FASTAPI junto con JWT para proteger una ruta de la aplicación. Se define una función get_current_user que se utiliza como Dependencia para verificar la validez del token JWT antes de permitir el acceso a la ruta protegida.
En resumen, la autenticación de usuario con JWT, OAUTH2 y FASTAPI es fundamental para garantizar la seguridad de las aplicaciones web. Mediante la protección de rutas en FASTAPI con JWT, se puede asegurar que solo los usuarios autorizados puedan acceder a ciertas partes de la aplicación, protegiendo así la información sensible y manteniendo la integridad de la aplicación.
Hola amigo, gracias por el video, una duda seguiras trabajando con este tema para inciarlo con un framework de diseño como vue.js?
Me encantó el video, donde pudiera consultar sobre el registro de usuarios y la implementación de refresh_token para cuando la token expira?
Podrías hacer un video de como estructurar un proyecto de fastapi.
me ustaria saber como invalidar el token para el logout
Pana ,mil gracias , llevo tiempo buscando un video que lo explique claramente ya que me perdia un poco con la documentación, excelente tu forma de explicar bro
Gracias por compartir tus conocimientos !!!
Muy buen video, pero tengo una pregunta, como haría este login con un html response?
Saludos, Buen tutorial, Si puedes hacerle su frontend en angular o react o ambos, seria la bomba
buenas compañero, excelente aporte, una pregunta donde colocarias el SECRET-KEY especificamente. dame un ejemplo. y nuevamente 1000 GRACIAS
que buen video, y que chulo tienes el manjaro
Muchas gracias por el video, me ha ayudado bastante
Una pregunta: que temas faltarían en el tema de expiración del token?
Hola que tal felicidades por el video me preguntaba si podrías realizar uno con una BD real….
Pana, desde el fondo del corazón, te agradezco semejante aporte.
Excelente video, muy bien explicado
Hola, excelente video, muy claro
Tengo una pregunta, como seria el manejo de una base de datos MySQL?
hola ¡¡¡ primero que nada gracias¡¡
estaría bueno si pudieras subir los códigos para probarlos
y ya por ultimo como para cerrar el circulo si pudieras hacer un video de como implementar todo esto con las htmls como mandar los
access_token o las cookies
MUCHAS GRACIAS ¡¡¡
Hola,
sabes por qué al intentar instalar las librerias en venv no se instalan, no las puedo usar en el entorno creado dentro de visual studio.
(venv) PS C:UsersLenovoDesktopCursoPythonfastapi_jwt>
esa es la ruta dentro del cmd, sin embargo, cuando uso pip install fastapi no aparece ningun mensaje de instalacion ni de error
justo lo que estaba buscando, muchas gracias y te animo a seguir creando mas contenido que se te dan bien