Desbloqueando el poder de la autenticación en FastAPI: Protege tus APIs con facilidad

Aprende a proteger tus APIs con autenticación en FastAPI. Guía completa sobre OAuth2, hashing de contraseñas y herramientas como Apidog.com para optimizar el desarrollo. ¡Empieza hoy y crea APIs seguras y de alto rendimiento!

Daniel Costa

Daniel Costa

16 December 2025

Desbloqueando el poder de la autenticación en FastAPI: Protege tus APIs con facilidad

Ya seas un desarrollador experimentado o estés empezando, asegurar que tus APIs son seguras es crucial. FastAPI, un framework web moderno y rápido (de alto rendimiento) para construir APIs con Python 3.7+, ofrece una excelente solución. Hoy, nos sumergiremos en los entresijos de la autenticación en FastAPI, exploraremos cómo implementarla y por qué es un cambio de juego para tus proyectos. Además, tocaremos cómo herramientas como Apidog pueden hacer tu vida aún más fácil.

button

¿Por qué FastAPI para tus APIs?

Antes de saltar a los detalles de la autenticación, hablemos de por qué podrías elegir FastAPI en primer lugar. FastAPI está diseñado para ser rápido y simple, permitiéndote construir y desplegar APIs de alto rendimiento rápidamente. Está construido sobre Starlette para las partes web y Pydantic para las partes de datos, lo que significa que obtienes tanto velocidad como fiabilidad.

Framework FastAPI, alto rendimiento, fácil de aprender, rápido de codificar, listo para producción

Beneficios Clave de FastAPI

  1. Rendimiento: FastAPI es uno de los frameworks de Python más rápidos disponibles.
  2. Facilidad de Uso: Su sintaxis es intuitiva y directa, haciéndolo accesible incluso para principiantes.
  3. Documentación Automática e Interactiva de la API: FastAPI genera automáticamente documentación interactiva de la API con Swagger UI y ReDoc.
  4. Seguridad de Tipos: Aprovechando las sugerencias de tipo de Python, FastAPI asegura un código robusto y libre de errores.

La Importancia de la Autenticación

Al construir APIs, asegurarlas con mecanismos de autenticación es esencial para proteger datos sensibles y asegurar que solo los usuarios autorizados puedan acceder a ciertos endpoints. La autenticación ayuda a verificar la identidad de los usuarios o sistemas que interactúan con tu API, proporcionando una capa de seguridad y confianza.

Tipos de Autenticación

FastAPI soporta múltiples tipos de autenticación, incluyendo:

Configurando la Autenticación en FastAPI

Ahora, vamos al corazón del asunto: configurar la autenticación en FastAPI. Cubriremos una implementación básica de OAuth2 con Contraseña (y hashing), una de las formas más comunes y seguras de manejar la autenticación.

Paso 1: Instala FastAPI y Dependencias

Primero, asegúrate de tener FastAPI y las dependencias necesarias instaladas. Puedes hacer esto usando pip:

pip install fastapi[all] uvicorn

El [all] instala todas las dependencias necesarias para la autenticación, incluyendo pydantic y python-jose para JWT.

Paso 2: Crea una Aplicación FastAPI Básica

Empecemos con una aplicación FastAPI simple. Crea un archivo llamado main.py:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

Puedes ejecutar esta aplicación usando Uvicorn:

uvicorn main:app --reload

Paso 3: Implementando OAuth2 con Contraseña

OAuth2 es un framework de autorización ampliamente usado que proporciona flujos de autorización específicos para diferentes tipos de aplicaciones. Usaremos OAuth2 con Contraseña (y hashing) para gestionar la autenticación.

Creando Modelos de Usuario

Primero, define tus modelos de usuario. Crea un archivo llamado models.py:

from pydantic import BaseModel

class User(BaseModel):
    username: str
    email: str
    full_name: str
    disabled: bool = False

class UserInDB(User):
    hashed_password: str

Utilidad de Hashing de Contraseñas

A continuación, necesitarás una utilidad para hacer hash y verificar contraseñas. Crea un archivo llamado security.py:

from passlib.context import CryptContext

pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

def verify_password(plain_password, hashed_password):
    return pwd_context.verify(plain_password, hashed_password)

def get_password_hash(password):
    return pwd_context.hash(password)

Flujo de Contraseña OAuth2

Ahora, configura el Flujo de Contraseña OAuth2. Actualiza tu main.py para incluir lo siguiente:

from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jose import JWTError, jwt
from pydantic import BaseModel
from typing import Optional
import time

# Secret key to encode JWT
SECRET_KEY = "your_secret_key"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

# User database simulation
fake_users_db = {
    "johndoe": {
        "username": "johndoe",
        "full_name": "John Doe",
        "email": "johndoe@example.com",
        "hashed_password": "$2b$12$...",
        "disabled": False,
    }
}

class Token(BaseModel):
    access_token: str
    token_type: str

class TokenData(BaseModel):
    username: Optional[str] = None

def authenticate_user(fake_db, username: str, password: str):
    user = fake_db.get(username)
    if not user:
        return False
    if not verify_password(password, user["hashed_password"]):
        return False
    return user

def create_access_token(data: dict, expires_delta: Optional[int] = None):
    to_encode = data.copy()
    if expires_delta:
        expire = time.time() + expires_delta
    else:
        expire = time.time() + ACCESS_TOKEN_EXPIRE_MINUTES * 60
    to_encode.update({"exp": expire})
    encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
    return encoded_jwt

@app.post("/token", response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
    user = authenticate_user(fake_users_db, form_data.username, form_data.password)
    if not user:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Nombre de usuario o contraseña incorrectos",
            headers={"WWW-Authenticate": "Bearer"},
        )
    access_token = create_access_token(data={"sub": user["username"]})
    return {"access_token": access_token, "token_type": "bearer"}

@app.get("/users/me", response_model=User)
async def read_users_me(token: str = Depends(oauth2_scheme)):
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="No se pudieron validar las credenciales",
        headers={"WWW-Authenticate": "Bearer"},
    )
    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
    user = fake_users_db.get(username, None)
    if user is None:
        raise credentials_exception
    return user

Este código configura un flujo de contraseña OAuth2 simple. Los usuarios pueden obtener un token proporcionando su nombre de usuario y contraseña al endpoint /token, y pueden usar este token para autenticarse en endpoints protegidos como /users/me.

Paso 4: Probando tu Autenticación

Para probar tu autenticación, puedes usar una herramienta de prueba de API como Postman o Apidog. Aquí te mostramos cómo puedes hacerlo con Apidog:

Crear una Nueva solicitud: Abre Apidog y crea una nueva solicitud.

Mejorando tu Autenticación en FastAPI con Apidog

Mientras que FastAPI facilita la configuración de la autenticación, herramientas como Apidog pueden agilizar aún más el proceso proporcionando una plataforma para diseñar, documentar y probar tus APIs. Apidog ofrece una interfaz fácil de usar para gestionar tus endpoints de API, simular respuestas y colaborar con tu equipo.

Apidog interface

Beneficios de Usar Apidog

  1. Gestión Integral de APIs: Diseña, prueba y documenta tus APIs en un solo lugar.
  2. Colaboración: Trabaja con tu equipo en tiempo real, comparte endpoints y revisa cambios.
  3. Respuestas Simuladas: Simula respuestas de API para probar sin golpear los endpoints reales.

Conclusión

FastAPI simplifica el proceso de construir y asegurar APIs, haciéndolo una opción superior para desarrolladores que buscan rendimiento y facilidad de uso. Implementando la autenticación con FastAPI, aseguras que tus APIs son seguras y solo accesibles para usuarios autorizados. Adicionalmente, aprovechar herramientas como Apidog puede mejorar tu experiencia de desarrollo de API proporcionando capacidades robustas de gestión y prueba.

Ahora que sabes cómo implementar la autenticación en FastAPI, puedes asegurar con confianza tus APIs y proteger tus datos. ¡Feliz codificación!

button

Explore more

Postman con una interfaz en español: Descargar gratis

Postman con una interfaz en español: Descargar gratis

Postman carece de una interfaz de usuario en español, lo que complica la colaboración y la eficiencia. Apidog emerge como la alternativa definitiva, ofreciendo una experiencia de desarrollo de API totalmente en español.

1 August 2025

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

28 April 2025

¿Dónde Descargar Swagger UI en Español Gratis?

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

23 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs