Saltar al contenido

AWS Cognito como back-end de autenticación de Django para sitio web

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *