API de Autenticación de Usuarios en FastAPI
Funcionalidades
Registro de usuarios: Permite crear nuevos usuarios con nombre de usuario y contraseña.
Inicio de sesión: Autentica a los usuarios y genera un token de acceso JWT.
Obtener información del usuario actual: Permite obtener información del usuario actualmente autenticado.
Actualizar información del usuario: Permite actualizar la información de un usuario existente.
Eliminar un usuario: Permite eliminar un usuario.


Tecnologías utilizadas
FastAPI: Framework de Python para crear APIs.
Python: Lenguaje de programación principal.
JWT: JSON Web Tokens para autenticación.
Bcrypt: Para el hash de contraseñas.
MongoDB: Se utiliza MongoDB como base de datos.
Aprendizajes Clave
FastAPI: Profundizar en el uso de FastAPI para crear APIs RESTful de manera rápida y eficiente.
Autenticación JWT: Comprender el funcionamiento de JWT para asegurar la comunicación entre cliente y servidor.
Hashing de contraseñas: Utilizar Bcrypt para almacenar contraseñas de forma segura y evitar ataques de fuerza bruta.
Manejo de excepciones: Utilizar excepciones HTTP para indicar errores y proporcionar respuestas significativas al cliente.
Validación de datos: Implementar validación de datos para garantizar la integridad de los datos ingresados por el usuario.
Diseño de APIs: Diseñar APIs RESTful siguiendo buenas prácticas y estándares.
Seguridad: Comprender los conceptos básicos de seguridad en APIs, como la protección contra ataques de inyección y la importancia de almacenar las claves de forma segura.
MongoDB: Interactuar con una base de datos NoSQL como MongoDB para almacenar y recuperar datos de usuarios.


Consideraciones importantes (Seguridad)
Hashing de contraseñas: Se utiliza Bcrypt para almacenar las contraseñas de forma segura.
JWT: Los tokens JWT se utilizan para autenticar a los usuarios y deben ser almacenados de forma segura.
Validación: Se realiza una validación básica de los datos de entrada para prevenir ataques de inyección.
Manejo de errores: Se utilizan excepciones HTTP para indicar diferentes tipos de errores.


Ejemplos de solicitudes
Inicio de sesión(POST /auth/login)
Cuerpo de la solicitud (form-data):
username=nuevo_usuario password=contraseña_segura
Obtener lista de usuarios (GET/ userdb)
Esta petición buscará todos los usuarios en una base de datos MongoDB y devolverá los resultados en un formato adecuado para ser enviados.
Obtener mis datos (POST/ auth/me)
El token se incluye en el encabezado de autorización de las peticiones y se verifica en el servidor para asegurar que el usuario está autorizado a acceder al recurso solicitado.