Solución:
Si estás leyendo esto, probablemente buscaste en Google “aws cognito django” xD.
Solo quiero compartir lo que hice para que esto funcione:
- Django-Warrant. Gran paquete de envoltura de aws cognito.
- Asegúrese de comprender la estructura de su modelo de usuario actual. Si usa un modelo de usuario personalizado, no olvide mapearlo usando
COGNITO_ATTR_MAPPING
configuración. -
Cambie su autenticación para admitir la conectividad de terceros. Cuando obtenga del cliente algún token de Cognito, conviértalo en su propio token usando oAuth / JWT / Session.
-
Repensar su proceso de inicio de sesión / registro. ¿Quieres un registro diferente? El paquete django-warrant lo admite …
Al final del día, este es un ESTUPENDO solución para una autenticación rápida.
Para agregar a la respuesta aceptada, hay un paso adicional simple pero muy importante que encontré que era necesario tomar para usar django-warrant con Django 2.0:
El condicional en backend.py en el paquete raíz debe cambiarse de:
if DJANGO_VERSION[1] > 10
para:
if DJANGO_VERSION[1] > 10 or DJANGO_VERSION[0] > 1:
Usando django-warrant con Zappa y AWS Lambda:
El proyecto en el que estoy trabajando también usa Zappa para habilitar la implementación sin servidor de mi aplicación Django en AWS Lambda. Aunque el código anterior solucionó django-warrant para mí cuando probaba localmente, después de implementar la aplicación en el entorno Lambda, tuve otro problema importante derivado de algunos de los paquetes de soporte de django-warrant, principalmente relacionados con python-jose-pycryptodome, que django- justifica los usos durante el proceso de autenticación. El problema se manifestó en forma de un error FileNotFound relacionado con el archivo Crypto._SHA256. Este error parece haber sido causado porque pycryptodome espera que haya diferentes archivos disponibles en el paquete Crypto en tiempo de ejecución en Windows (en el que estoy desarrollando) y Linux (el entorno Lambda) respectivamente. Terminé resolviendo este problema descargando la versión de Linux de pycryptodome y fusionando su paquete Crypto con el paquete Crypto de la versión de Windows.
TLDR: si desea utilizar django-warrant con AWS Lambda y está desarrollando en una máquina con Windows, asegúrese de descargar la versión de Linux de pycryptodome y fusionar su paquete Crypto con el mismo de la versión de Windows.
Nota: Las versiones de pycryptodome y python-jose (no python-jose-cryptodome) que terminé usando para lograr lo anterior fueron 3.7.2 y 3.0.1 respectivamente.