Protección de rutas en FASTAPI con JWT, OAUTH2 y autenticación de usuario

Posted by

Autenticación de usuario con JWT, OAUTH2 y FASTAPI

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.

0 0 votes
Article Rating
18 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@ngarmonia6611
10 months ago

Hola amigo, gracias por el video, una duda seguiras trabajando con este tema para inciarlo con un framework de diseño como vue.js?

@user-ql6di8fu1j
10 months ago

Me encantó el video, donde pudiera consultar sobre el registro de usuarios y la implementación de refresh_token para cuando la token expira?

@dylanstevensuarezcruz5848
10 months ago

Podrías hacer un video de como estructurar un proyecto de fastapi.

@marianohernan405
10 months ago

me ustaria saber como invalidar el token para el logout

@mosalvestiendaonline9532
10 months ago

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

@filipayaviri1787
10 months ago

Gracias por compartir tus conocimientos !!!

@diegoalejandrotorrespinzon2011
10 months ago

Muy buen video, pero tengo una pregunta, como haría este login con un html response?

@mjavint
10 months ago

Saludos, Buen tutorial, Si puedes hacerle su frontend en angular o react o ambos, seria la bomba

@AsdrubalJoseGonzalezGonzalez
10 months ago

buenas compañero, excelente aporte, una pregunta donde colocarias el SECRET-KEY especificamente. dame un ejemplo. y nuevamente 1000 GRACIAS

@sergiogv5107
10 months ago

que buen video, y que chulo tienes el manjaro

@normagarcia1665
10 months ago

Muchas gracias por el video, me ha ayudado bastante
Una pregunta: que temas faltarían en el tema de expiración del token?

@renemarcogudmundsson8623
10 months ago

Hola que tal felicidades por el video me preguntaba si podrías realizar uno con una BD real….

@shaquillemontero2898
10 months ago

Pana, desde el fondo del corazón, te agradezco semejante aporte.

@julianlinero7474
10 months ago

Excelente video, muy bien explicado

@jesusbautistahernandez1825
10 months ago

Hola, excelente video, muy claro
Tengo una pregunta, como seria el manejo de una base de datos MySQL?

@KBzar
10 months ago

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

@mrjaimees
10 months ago

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

@gradolsarmy
10 months ago

justo lo que estaba buscando, muchas gracias y te animo a seguir creando mas contenido que se te dan bien