Quindi questa domanda sta esplorando sicurezza e crittografia e il problema potenzialmente non è stato riscontrato da molti. Le risposte possono essere teoriche. Lasciatemi delineare lo scenario ...
- Il frontend di un sito Web viene gestito tramite un'API di back-end. Il back-end ha un endpoint che gestisce un modulo di registrazione generico con
username
epassword
. Sta usando SSL. - L'API di back-end gestisce la registrazione tramite una coda di lavori asincroni. La coda non restituisce le risposte al server API. È un'operazione di impostazione e dimenticanza per accodare la registrazione.
- I lavori in coda vengono prelevati dai lavoratori. I lavoratori si occupano della creazione dell'account utente. Questi lavoratori hanno bisogno di accedere alla password utente in chiaro in modo che possano attivare una chiamata di registrazione API di terze parti con la password.
Quindi il vero nodo del problema è la sincronizzazione della password con l'API di terze parti senza rivelarla a occhi indiscreti. La coda pone il problema di non avere più accesso diretto alla password in chiaro dai dati POST globali, il che significa che deve essere memorizzato in qualche modo nella coda.
La coda può facilmente memorizzare la password con hash e copiarla direttamente nella tabella degli utenti. Questa soluzione non consente la sincronizzazione della password con l'API di terze parti, tuttavia, poiché è già crittografata. Mi sono divertito con la crittografia a due vie, ma sono completamente preoccupato di lasciare la password soggetta a decrittazione da parte di un utente malintenzionato.
Qualcuno può pensare a un modo sicuro per gestire questo scenario di sincronizzazione delle password?
La coda è un requisito e si presume che questo sia leggibile da chiunque abbia accesso al server. Le password non devono necessariamente essere sincronizzate; la password per l'API di terze parti potrebbe essere una derivazione dell'originale fintanto che esiste un mezzo sicuro per decifrare tramite l'utente che ha effettuato l'accesso senza fornire la propria password. Si tratta essenzialmente di simulare il Single Sign-On con un'API di terze parti che non supporta SSO.