Autenticación Básica HTTP con FastAPI

Clase 22 de 23Curso de FastAPI

Resumen

Cuando desarrollas APIs con FastAPI, proteger los datos es fundamental para garantizar la seguridad y privacidad de la información. Una forma práctica y sencilla de lograr esta protección es implementando autenticación con usuario y contraseña mediante HTTP Basic Credentials, una funcionalidad fácil de incorporar en tus endpoints.

¿Por qué debes proteger tus endpoints con FastAPI?

FastAPI ofrece diversos mecanismos que te permiten asegurar tus endpoints; uno de ellos es la autenticación básica, ampliamente utilizada por su eficiencia y sencillez. Este método consiste en requerir al usuario que ingrese su usuario y contraseña, validándose con información previamente almacenada.

Existen otros métodos de autenticación disponibles en FastAPI que puedes implementar según la lógica del negocio y necesidades específicas de tu proyecto.

¿Cómo implementar HTTP Basic Credentials en tus endpoints?

Para agregar autenticación básica mediante HTTP Basic Credentials, debes seguir estos pasos:

  1. Añadir dependencia en el endpoint: En tu código, deberás incluir Credentials como una dependencia directa en la definición del endpoint:
def root(credentials: Annotate[HTTPBasicCredentials, Depends(security)]):
  1. Registrar y validar credenciales: Asegúrate de importar y definir correctamente todas las dependencias necesarias como Depends, Annotate, y HTTPBasic. De esta forma, FastAPI sabrá gestionar automáticamente las credenciales de usuario.

  2. Autenticación de usuario: Utiliza las credenciales obtenidas para realizar acciones como consultar una base de datos y verificar si el usuario y la contraseña son correctos. Por ejemplo:

if credentials.username == "LC Martínez" and credentials.password == "contraseña_ejemplo":
    return {"mensaje": f"Hola, {credentials.username}"}
else:
    raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)

¿Cómo verificar que tu implementación funciona correctamente?

Después de configurar la autenticación:

  • Accede nuevamente a la documentación generada automáticamente por FastAPI.
  • Observa el nuevo botón disponible para autenticación.
  • Al pulsarlo, deberás ingresar tu usuario y contraseña.
  • Si ingresas datos válidos, el sistema te permitirá acceder; en caso contrario, recibirás un mensaje claro sobre la falta de autorización.

¿Qué consideraciones adicionales debes tomar?

  • Es recomendable no almacenar contraseñas directamente en código para evitar riesgos de seguridad.
  • Implementa métodos seguros de almacenamiento y gestión de contraseñas, como variables de entorno o bases de datos protegidas.

¿Tienes alguna pregunta sobre cómo mejorar aún más la seguridad en tus APIs con FastAPI o deseas compartir tu experiencia con esta práctica?