Sto cercando di ottenere alcuni suggerimenti su come dovrei progettare il sistema di autenticazione per un'API del resto della struttura di Django.
Lo stack è simile a questo:
-
Framework di Django REST
-
Struttura di Django REST MongoEngine
-
JWT framework Django REST
-
Framework di Django REST Auth0
Dato che disponiamo di un data base Mongo, stiamo utilizzando MongoEngine e rest_framework_mongoengine per i nostri modelli.
Le discussioni che avevamo fornito hanno offerto due opzioni per l'autenticazione.
Uno consiste nell'usare il normale sistema di classi di permessi fornito dal resto del framework. Alla prima ricezione del JWT, verrà creato un oggetto utente Django e una sessione e l'utente verrà contrassegnato come autenticato in quella sessione.
L'altro è quello di creare un middleware personalizzato che garantisca, in base al JWT, che l'utente disponga delle autorizzazioni necessarie per la risorsa a cui tenta di accedere e l'azione che tenta di eseguire.
La prima opzione è più semplice. Lo svantaggio sarebbe la sessione, che va di nuovo ai principi REST. Ciò potrebbe anche avere un impatto sulla scalabilità in quanto gli utenti saranno associati a un particolare server.
La seconda opzione, sebbene un po 'più difficile da attuare, manterrebbe il principio REST dell'apolidia. Tuttavia, influisce anche sulle prestazioni poiché il controllo deve essere eseguito per tutte le chiamate.
-
Cosa ne pensi di questi trade-off. Vedete che uno è più vantaggi in generale rispetto agli altri?
-
Inoltre, hai suggerimenti su un'architettura migliore?
-
Se dovessi implementare un sistema di autenticazione per un'app di framework Django REST usando Auth0, come faresti per farlo?