La autenticación y autorización de usuarios son componentes integrales al crear aplicaciones web modernas. FastAPI proporciona una variedad de métodos para implementar la autenticación para garantizar que solo los usuarios autorizados puedan acceder a recursos específicos o realizar operaciones específicas. Este artículo presentará los métodos de autenticación en FastAPI, incluidos conceptos básicos, casos prácticos y algunos consejos y trucos.
Conceptos básicos de autenticación en FastAPI
Antes de comenzar a analizar métodos de autenticación específicos, primero comprendamos algunos conceptos básicos:
1. Autenticación : la autenticación es el proceso de determinar la identidad de un usuario. Normalmente, los usuarios deben proporcionar credenciales (como nombre de usuario y contraseña) para autenticarse.
2. Autorización : La autorización es el proceso de determinar si un usuario tiene permiso para realizar operaciones específicas o acceder a recursos específicos. Una vez que un usuario se autentica exitosamente, las reglas de autorización determinan las acciones que puede realizar.
3. Token : Token es un token que representa la identidad del usuario. Normalmente, el usuario recibe un token al iniciar sesión correctamente, que luego se incluye en un encabezado o parámetro de solicitud en cada solicitud posterior.
4.Middleware : el middleware es un fragmento de código que se ejecuta antes o después de procesar una solicitud y se puede utilizar para agregar lógica de procesamiento adicional, incluida la autenticación.
Métodos de autenticación en FastAPI
1. Autenticación HTTP básica
La autenticación HTTP básica es uno de los métodos de autenticación más simples y requiere que el usuario proporcione un nombre de usuario y una contraseña. FastAPI puede usar base64
módulos de Python para decodificar nombres de usuario y contraseñas en encabezados HTTP.
2. OAuth2.0
OAuth2.0 es un método de autenticación más complejo que permite a los usuarios autenticarse a través de servicios de terceros. FastAPI proporciona herramientas como OAuth2PasswordBearer
, OAuth2PasswordRequestForm
etc. para simplificar la implementación de OAuth2.0.
3. Middleware de autenticación personalizado
Si necesita una lógica de autenticación más personalizada, puede escribir middleware de autenticación personalizado. Esto le permite tener control total sobre el proceso de autenticación y manejarlo antes de cada solicitud.
Casos prácticos
Para demostrar el método de autenticación, a continuación se crea una API simple basada en FastAPI , que incluye dos rutas: una ruta pública y una ruta que requiere autenticación. Usaremos la autenticación HTTP básica como método de autenticación y agregaremos comentarios detallados para cada ruta. Primero, asegúrese de que FastAPI y uvicorn estén instalados:
Ahora, creemos un main.py
archivo llamado con el siguiente contenido:
En el código anterior, creamos una aplicación FastAPI que contiene dos rutas. public_data
La ruta es pública y no requiere autenticación. El enrutador secure_data
utiliza autenticación HTTP básica para la autenticación. Para ejecutar este ejemplo, utilice el siguiente comando:
Ahora puede probar rutas que requieren autenticación accediendo a ellas en un navegador o cliente API http://localhost:8000/secure-data/
y proporcionando el nombre de usuario y la contraseña correctos. Al mismo tiempo, también puedes acceder http://localhost:8000/
a probar rutas públicas sin autenticación.
Consejos, trucos y consideraciones
- Utilice siempre HTTPS para proteger la transmisión de credenciales de usuario.
- Al almacenar contraseñas, deben almacenarse utilizando hashes de contraseña en lugar de contraseñas de texto sin cifrar.
- Administre y proteja cuidadosamente sus tokens de autenticación para evitar violaciones de seguridad.
- Comprenda y siga las mejores prácticas para OAuth2.0 y otros protocolos de autenticación para garantizar la seguridad de las aplicaciones.
Cómo depurar la interfaz FastAPI
Puede utilizar la herramienta de interfaz Apifox para depurar, Apifox = Postman + Swagger + Mock + JMeter, Apifox admite interfaces de depuración de Dubbo , http (s), WebSocket, Socket, gRPC y otros protocolos, e integra el complemento IDEA . Después de escribir la interfaz del servicio, puede utilizar Apifox para verificar la exactitud de la interfaz durante la fase de prueba. La interfaz gráfica facilita enormemente la eficiencia del lanzamiento del proyecto.
Si desea depurar rápidamente una interfaz, después de crear un nuevo proyecto, seleccione "Modo de depuración" en el proyecto , complete la dirección de la solicitud y luego envíe rápidamente la solicitud y obtenga el resultado de la respuesta. El caso práctico anterior se muestra en la cifra:
Resumir
FastAPI proporciona una variedad de métodos de autenticación flexibles, lo que le permite elegir el método que mejor se adapte a las necesidades de su aplicación. Desde autenticación HTTP básica hasta OAuth2.0 y middleware de autenticación personalizada, FastAPI proporciona potentes herramientas y soporte para crear aplicaciones web seguras.
Ampliación del conocimiento:
- Primeros pasos con FastAPI
- Solicitudes simultáneas FastAPI: características clave para mejorar el rendimiento
Enlaces de referencia:
- Documentación oficial de FastAPI: FastAPI
- Documentación oficial de OAuth2.0: OAuth 2.0 — OAuth
- Documentación del módulo Python base64: