Estoy usando Django 2.2 para mi aplicación web.
Y he estado buscando tutoriales que atiendan el inicio de sesión cruzado del código QR en la aplicación web usando la aplicación móvil.
Básicamente, el flujo de trabajo es así:
No entiendo muy bien cómo el móvil y la aplicación web en el back-end funcionan entre sí para lograr esto sin problemas.
Encontré esta biblioteca https://github.com/aruseni/django-qrauth que parece que ya no se mantiene. Pero todavía no puedo entender cómo funciona el flujo entre la aplicación móvil y el backend de la aplicación web.
También encontré este https://medium.com/@ksarthak4ever/django-two-factor-authentication-2ece42748610 que parece usar el teléfono móvil como un dispositivo 2FA. No es exactamente el caso de uso que estoy buscando a menos que lo haya entendido mal.
Encontré este artículo https://backendless.com/how-to-implement-mobile-to-web-cross-login-using-a-qr-code/ que es lo que me dio el término "inicio de sesión cruzado". Sin embargo, el artículo se inclina fuertemente hacia este proveedor en particular.
Estoy buscando una "comprensión" del concepto sin depender de los detalles de la implementación del proveedor.
En caso de que mi pregunta esté mal formulada y se malinterprete, he incluido esta sección para aclarar lo que no estoy buscando.
No busco el caso de uso en el que el código QR sirve como confirmación 2FA para la aplicación de autenticación.
Tampoco estoy mirando ejemplos de código todavía. Solo quiero una comprensión clara primero de cómo funcionan las cosas entre la aplicación móvil y la web. Creo que se necesita JWT, aunque supongo.
Un flujo de trabajo es más apreciado que el código real porque primero quiero comprender cómo funciona.
Creo que quieres hacer algo como la web de WhatsApp donde los usuarios inician sesión en la aplicación web mediante un código QR, si estuviera haciendo esa implementación, lo haré de la siguiente manera.
Espero que esté bastante claro.
El concepto clave es que el inicio de sesión se produce cuando un usuario y un navegador coinciden. Un usuario significa un usuario (o un dispositivo de usuario) ya reconocido (autenticado) por el servidor.
Lo explicaré con Django-channels web socket framework. (En este caso, la clave de solicitud de inicio de sesión y el nombre del canal son los mismos, pero también está bien una clave y un nombre de canal diferentes).
Django-channels[redis] hizo un canal llamado esa cadena(FOO). envíe la clave (FOO) al navegador del usuario.La clave de solicitud de inicio de sesión (FOO) podría ser un JWT (contiene clave, URL, expira, etc.) o simplemente una cadena segura (varía según el escenario). no contiene información de la cuenta y el servidor debe almacenarla.
La clave de inicio de sesión (BAR) suele ser un JWT. con JWT, contiene información de la cuenta y el servidor no tiene que almacenar la clave (sin estado)