Divulgazione : sono un ingegnere di Auth0 .
Dipende da un punto importante ... devi decidere se:
- vuoi spendere direttamente una notevole quantità di tempo (e indirettamente spendere soldi) per costruire e / o mantenere il tuo provider di identità e server di autorizzazione
- o preferisci spendere direttamente denaro e utilizzare un provider di autenticazione di terze parti come Auth0.
Entrambe le opzioni sono perfettamente praticabili dal punto di vista delle vostre esigenze funzionali. Con lo sviluppo personalizzato hai il pieno controllo delle funzionalità che decidi di supportare, quindi focalizzerò parte della risposta su come Auth0 può rispondere ai requisiti che hai elencato .
Tuttavia, prima di passare a questo, indipendentemente dalla tua decisione, per l'autenticazione dovresti concentrarti su OpenID Connect anziché su OAuth2. Quest'ultimo sarà più applicabile se prevedi di avere anche API nel mix e non solo dividere il monolito in applicazioni web separate.
Come migrare gli utenti esistenti su un sistema basato su Auth0?
Puoi decidere di continuare a utilizzare il tuo database e fare affidamento su Auth0 per fornire tutta la conformità ai protocolli relativi all'autenticazione che potresti dover utilizzare oppure puoi migrare i tuoi utenti su database gestiti Auth0 e smettere di preoccuparti di come archiviare e convalidare le password.
Se si preferisce continuare a utilizzare il database, consultare Autenticare gli utenti con nome utente e password utilizzando un database personalizzato
Le applicazioni spesso si basano su database utente per l'autenticazione. Auth0 ti consente di collegarti facilmente a questi repository e di usarli come provider di identità preservando le credenziali dell'utente e fornendo molte funzionalità aggiuntive.
(I documenti si riferiscono a MySQL solo come esempio, sono supportati altri motori di database)
D'altra parte, è possibile spostare senza soluzione di continuità le credenziali dell'utente nei database Auth0 sfruttando il processo di migrazione descritto in Migrare gli utenti in Auth0
Auth0 supporta la migrazione automatica degli utenti su Auth0 da una connessione al database personalizzata. Questa funzione aggiunge i tuoi utenti al database Auth0 una volta alla volta mentre ognuno accede ed evita di chiedere ai tuoi utenti di reimpostare le loro password contemporaneamente.
Puoi anche creare tutti i tuoi utenti in Auth0 tramite l'API di gestione se preferisci che tutti inizino a utilizzare il nostro algoritmo di hashing della password in una sola volta. Ciò ha l'effetto collaterale di richiedere agli utenti di reimpostare la password.
Come continuare a utilizzare l'autenticazione in due passaggi personalizzata (domande di verifica)?
La pipeline di autenticazione fornita da Auth0 è completamente personalizzabile attraverso l'uso di regole . Ciò significa che anche se non è stato necessario implementare alcun elemento relativo al protocollo, è comunque possibile ottimizzare i piccoli dettagli su come avviene l'autenticazione nella propria applicazione.
Ciò include la possibilità di continuare a utilizzare le domande di verifica esistenti come modo per eseguire un processo di autenticazione in due passaggi in cui l'utente fornisce una password iniziale verificata da Auth0 e quindi si richiedono loro ulteriori informazioni da una regola personalizzata. (le regole sono solo Javascript quindi le possibilità sono infinite)
Tuttavia, puoi anche decidere di eliminare le domande di verifica e utilizzare invece Auth0 Guardian per aumentare la sicurezza del processo di autenticazione.
Come personalizzare l'aspetto dell'interfaccia utente di autenticazione?
Con Auth0 puoi avere un'interfaccia utente di autenticazione pulita in pochissimo tempo sfruttando le pagine di accesso predefinite o i widget di autenticazione come Lock . Tutti questi supportano un certo grado di personalizzazione e puoi sempre decidere di fare tu stesso la tua UI e sfruttare invece le librerie Auth0 di livello inferiore ( Auth0.js ) che non vincolano l'interfaccia utente.
Per ulteriori informazioni sulla personalizzazione:
Come prevenire pagine di consenso esplicito?
Puoi utilizzare Auth0 sia come provider di identità a fini di autenticazione sia come server di autorizzazione OAuth2 (attualmente disponibile solo nella regione degli Stati Uniti) per le tue API.
Come provider di identità non devi preoccuparti delle pagine di consenso, l'utente esegue l'autenticazione con le proprie credenziali gestite da Auth0 e quindi viene reindirizzato alla tua applicazione, tutto qui.
In OAuth2 come scenario di servizio quando il consenso è abilitato, la road map include il permesso di bypassare le pagine di consenso per determinate applicazioni.
In ultima analisi, sembra un progetto molto interessante e stimolante che ci sei arrivato, quindi buona fortuna indipendentemente dalla tua decisione finale.
Ho già sperimentato qualcosa di simile in un lavoro precedente quando dovevo implementare nuovamente il sistema di autenticazione di un'applicazione legacy. Abbiamo implementato il nostro provider di identità e il nostro server di autorizzazione e, a dire il vero, ho ancora la sensazione che potremmo aver dimenticato qualcosa di veramente essenziale.
Penso che sia il problema più grande con la sicurezza personale, ci saranno occasioni in cui le scadenze impongono scorciatoie e la sicurezza non è davvero una buona area per creare scorciatoie.
Se hai ulteriori domande, fammi sapere se pensi che possa esserti utile.