Seguridad¶
Hay muchas formas de manejar la seguridad, autenticaci贸n y autorizaci贸n.
Y normalmente es un tema complejo y "dif铆cil".
En muchos frameworks y sistemas, solo manejar la seguridad y autenticaci贸n requiere una gran cantidad de esfuerzo y c贸digo (en muchos casos puede ser el 50% o m谩s de todo el c贸digo escrito).
FastAPI proporciona varias herramientas para ayudarte a manejar la Seguridad de manera f谩cil, r谩pida y est谩ndar, sin tener que estudiar y aprender todas las especificaciones de seguridad.
Pero primero, vamos a revisar algunos peque帽os conceptos.
驴Con prisa?¶
Si no te importan ninguno de estos t茅rminos y solo necesitas agregar seguridad con autenticaci贸n basada en nombre de usuario y contrase帽a ahora mismo, salta a los siguientes cap铆tulos.
OAuth2¶
OAuth2 es una especificaci贸n que define varias maneras de manejar la autenticaci贸n y autorizaci贸n.
Es una especificaci贸n bastante extensa y cubre varios casos de uso complejos.
Incluye formas de autenticarse usando un "tercero".
Eso es lo que todos los sistemas con "iniciar sesi贸n con Facebook, Google, X (Twitter), GitHub" utilizan internamente.
OAuth 1¶
Hubo un OAuth 1, que es muy diferente de OAuth2, y m谩s complejo, ya que inclu铆a especificaciones directas sobre c贸mo encriptar la comunicaci贸n.
No es muy popular o usado hoy en d铆a.
OAuth2 no especifica c贸mo encriptar la comunicaci贸n, espera que tengas tu aplicaci贸n servida con HTTPS.
Consejo
En la secci贸n sobre deployment ver谩s c贸mo configurar HTTPS de forma gratuita, usando Traefik y Let's Encrypt.
OpenID Connect¶
OpenID Connect es otra especificaci贸n, basada en OAuth2.
Solo extiende OAuth2 especificando algunas cosas que son relativamente ambiguas en OAuth2, para intentar hacerla m谩s interoperable.
Por ejemplo, el login de Google usa OpenID Connect (que internamente usa OAuth2).
Pero el login de Facebook no soporta OpenID Connect. Tiene su propia versi贸n de OAuth2.
OpenID (no "OpenID Connect")¶
Hubo tambi茅n una especificaci贸n "OpenID". Que intentaba resolver lo mismo que OpenID Connect, pero no estaba basada en OAuth2.
Entonces, era un sistema completo adicional.
No es muy popular o usado hoy en d铆a.
OpenAPI¶
OpenAPI (anteriormente conocido como Swagger) es la especificaci贸n abierta para construir APIs (ahora parte de la Linux Foundation).
FastAPI se basa en OpenAPI.
Eso es lo que hace posible tener m煤ltiples interfaces de documentaci贸n interactiva autom谩tica, generaci贸n de c贸digo, etc.
OpenAPI tiene una forma de definir m煤ltiples "esquemas" de seguridad.
Al usarlos, puedes aprovechar todas estas herramientas basadas en est谩ndares, incluidos estos sistemas de documentaci贸n interactiva.
OpenAPI define los siguientes esquemas de seguridad:
apiKey: una clave espec铆fica de la aplicaci贸n que puede provenir de:- Un par谩metro de query.
- Un header.
- Una cookie.
http: sistemas de autenticaci贸n HTTP est谩ndar, incluyendo:bearer: un headerAuthorizationcon un valor deBearerm谩s un token. Esto se hereda de OAuth2.- Autenticaci贸n b谩sica HTTP.
- Digest HTTP, etc.
oauth2: todas las formas de OAuth2 para manejar la seguridad (llamadas "flujos").- Varios de estos flujos son apropiados para construir un proveedor de autenticaci贸n OAuth 2.0 (como Google, Facebook, X (Twitter), GitHub, etc.):
implicitclientCredentialsauthorizationCode
- Pero hay un "flujo" espec铆fico que puede usarse perfectamente para manejar la autenticaci贸n directamente en la misma aplicaci贸n:
password: algunos de los pr贸ximos cap铆tulos cubrir谩n ejemplos de esto.
openIdConnect: tiene una forma de definir c贸mo descubrir autom谩ticamente los datos de autenticaci贸n OAuth2.- Este descubrimiento autom谩tico es lo que se define en la especificaci贸n de OpenID Connect.
Consejo
Integrar otros proveedores de autenticaci贸n/autorizaci贸n como Google, Facebook, X (Twitter), GitHub, etc. tambi茅n es posible y relativamente f谩cil.
El problema m谩s complejo es construir un proveedor de autenticaci贸n/autorizaci贸n como esos, pero FastAPI te da las herramientas para hacerlo f谩cilmente, mientras hace el trabajo pesado por ti.
Utilidades de FastAPI¶
FastAPI proporciona varias herramientas para cada uno de estos esquemas de seguridad en el m贸dulo fastapi.security que simplifican el uso de estos mecanismos de seguridad.
En los siguientes cap铆tulos ver谩s c贸mo agregar seguridad a tu API usando esas herramientas proporcionadas por FastAPI.
Y tambi茅n ver谩s c贸mo se integra autom谩ticamente en el sistema de documentaci贸n interactiva.