Considera lo scenario seguente: l'applicazione Web utilizza due sistemi separati (possono condividere dati / stati tramite DB). Il primo è utilizzato per l'elaborazione di materiale web standard come richieste / risposte HTTP, contenuto HTML, moduli e tutto ciò che è correlato. Il secondo è usato per le comunicazioni in tempo reale come l'invio di messaggi e notifiche (long poll o server WebSocket).
L'utente può essere autenticato tramite il primo sistema / piattaforma e se le credenziali sono valide, alcune pagine Web vengono inviate al client. Una volta caricata questa pagina, il client deve essere collegato in modo trasparente al secondo sistema / piattaforma in background.
La domanda è: come autenticare l'utente su una pagina web / un'applicazione che consiste di più sistemi / piattaforme sul back-end?
Posso immaginarlo in questo modo:
- Quando l'utente viene autenticato tramite il primo sistema / piattaforma, il token GUID viene generato e memorizzato in un database associato ad un utente. Questo token e l'ID utente vengono anche inviati in risposta al client e, ad esempio, resi sulla pagina in campi nascosti.
- Quando la pagina viene caricata e viene stabilita la connessione con il secondo sistema / piattaforma, il token e l'ID utente dai campi nascosti vengono recuperati e inviati come parametri con richiesta di connessione. Il back-end trova l'utente, confronta il suo token nel database e può stabilire se la connessione in tempo reale può essere avviata.
Capisco che questo approccio sia vulnerabile allo sniffing, ad esempio, ma sono interessato alla procedura di autenticazione tra due sistemi / piattaforme separati.