Ecco dove sono atterrato dopo due giorni di hacking. Accolgo con favore qualsiasi commento o critica. Se identificherai un difetto funzionale fondamentale o di sicurezza con questo approccio, ti pagherò abbastanza soldi per una libbra di caffè o sei confezioni di birra.
Ho selezionato Django come il mio 'stack web moderno' per una piattaforma di base. Lo sfrutterò per sicurezza, account, sessione e gestione delle password. Io con entusiasmo rinvio delle funzionalità sensibili alla sicurezza a Django (ad esempio, seguendo le convenzioni ove possibile). Non mi sottraggo alla responsabilità per la sicurezza, ma credo che il consumo informato di un framework controllato dal settore sia intrinsecamente più sicuro rispetto al proprio. Ho selezionato Django principalmente in base alla familiarità e alla preferenza per Python, oltre alla maturità del framework.
Da subito, Django ha un grande supporto per la gestione e l'autenticazione degli account. Di particolare valore è la grande interfaccia di amministrazione di Django che consente a un superutente di reimpostare le password, disabilitare gli account, ecc. Questo è un valore enorme imho.
Per supportare la registrazione e la gestione del ciclo di vita dell'account (reimpostazione della password, ecc.), sono andato con il modulo di registrazione di django:
link
Questa sembra una libreria molto matura e controllata con una grande documentazione. Non include non modelli di moduli di base, ma ho trovato un buon set qui che ho personalizzato:
link
Questo mi ha permesso di utilizzare una soluzione completa per la gestione degli account per l'utilizzo del web, ma (come detto sopra) ho bisogno di una soluzione basata su API per un'app mobile. Non voglio mantenere la password dell'utente localmente sul telefono e preferirei evitare di gestire i cookie di sessione nelle mie chiamate API (un approccio token è superiore all'imho). Ho scoperto questo modulo:
link
Che funziona alla grande. L'unica cosa che mancava a questo punto era un'API per la registrazione programmatica di nuovi account dall'applicazione mobile nativa. L'ho codificato io stesso.
Per farla breve, ho il seguente lavoro (come vanilla-Django possibile):
- autenticazione completa degli account e gestione del ciclo di vita dall'autore di Django
- registrazione web completa dell'account da registrazione django
- alcuni modelli di interfaccia utente primitivi, ma funzionali, di django-registration-defaults
- sicurezza basata su token per chiamate API mobili tramite django-tokenapi
- una speciale API one-off per la registrazione di nuovi account all'interno dell'app mobile
Sembra funzionare ...