Come migrare webapp legacy esistente per usare OAuth2


10

Al momento ho una webapp monolitica legacy di 15 anni con quasi 1 milione di utenti, che utilizza un sistema di autorizzazione e autenticazione sviluppato in casa: JAAS, nomi utente e pwds archiviati in un DB con hashing della password di base, alcune domande di verifica personale 2FA (con differenti algoritmi di hashing, ecc.).

Ricondurrò l'applicazione nei prossimi 12-18 mesi, concentrandomi principalmente sull'interfaccia utente, ma aggiornando lentamente anche le parti sottostanti (aggiornamento a Spring, Spring Security, ecc.). Nell'ambito di questo progetto, abbiamo deciso di affrontare l'aggiornamento dell'interfaccia utente su base modulo per modulo; rendere ogni modulo disponibile una volta completato; un'opportunità perfetta per spezzare il monolite in singole webapp (tutte mantenendo lo stesso design UX).

Dove sono bloccato cercando di pianificare questo è a livello di autenticazione e autorizzazione. Ho bisogno di una soluzione trasversale che si arcuerà su tutti i moduli, in modo che quando un utente viene indirizzato da una webapp a un'altra, sia una transizione senza soluzione di continuità - non sapranno nemmeno che si trovano su webapp diverse. OAuth2 sembra la soluzione perfetta.

Sono bloccato cercando di capire come integrarlo. Devo creare il mio server OAuth2 personalizzato? Mi colpisce come un'idea terribile. Ma come posso:

  1. migrare tutti i miei account utente e il processo di autorizzazione su un server OAuth2 di terze parti
  2. personalizzare l'aspetto per adattarsi al resto della mia applicazione (non sono sicuro di quanto sia facile / probabile)
  3. impedire il tipico popup "Applicazione XYZ vorrebbe l'autorizzazione ad accedere al proprio account ..." quando ci si connette tramite un server di terze parti? (ad es. Google OpenID, Facebook, ecc.).

Il mio obiettivo è fornire una transizione senza interruzioni per l'utente dallo stato corrente al nuovo stato, ma fornire la possibilità di creare webapp separate che tutte autenticano e autorizzano al di fuori della webapp.


Mi chiedo se un SSO sarebbe abbastanza. OAuth non mi sembra il tipo di sistema di cui hai bisogno qui. Dai un'occhiata a CAS
Laiv il

Risposte:


2

Divulgazione : sono un ingegnere di Auth0 .

Dipende da un punto importante ... devi decidere se:

  1. 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
  2. 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.


Grazie per tutti i dettagli Ricordo di aver visto Auth0, ma da quello che posso dire, Auth0 è solo cloud; è corretto? Per motivi di sicurezza e privacy, sono limitato a cercare solo soluzioni che posso ospitare nel mio data center / cloud personale. Auth0 offre questo tipo di opzione?
Eric B.

Sì, Auth0 è molto flessibile in termini di distribuzione / hosting. La soluzione cloud non pubblica è attualmente nota come Appl0 Auth0 ed è possibile distribuirla in un'area dedicata del cloud Auth0, del cloud o del proprio data center . Consultare i documenti dell'appliance per ulteriori informazioni. Se hai bisogno di informazioni più dettagliate, fammi sapere, posso provare ad aiutarti direttamente o indirizzarti alle persone giuste.
João Angelo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.