Ho un sito PHP tradizionale che usa sessioni. Ho sviluppato un'applicazione in tempo reale su nodejs e desidero autenticare gli utenti qui in base alla loro sessione PHP. La procedura dovrebbe essere simile a questa:
- Client AJAX è una pagina getAuthToken.php
- Il client si connette al server Websocket in modo anonimo
- Il client invia il proprio token di autenticazione
- Il server controlla il token, autentica l'utente
getAuthToken.php dovrebbe generare un token di autenticazione per il nome utente della sessione corrente usando una chiave simmetrica (condivisa dal server websocket) e restituirla.
Quale sarebbe il miglior algoritmo da usare qui? Ho poca esperienza con la crittografia e non sono sicuro di dove procedere.
Un approccio che viene in mente potrebbe essere quello di SHA-2, il nome utente e qualche chiave segreta. Passiamo quindi il nome utente e questo hash al server websocket che farebbe lo stesso e confrontare gli hash. Includi un timestamp con l'hash per garantire ogni volta un token univoco.
L'approccio sopra è sicuro? C'è un approccio migliore? Non sono interessato a nulla sul cavo, useremo SSL per tutte le comunicazioni - la mia unica preoccupazione è la capacità di impersonare altri utenti generando un token fasullo attraverso l'ispezione del proprio token. L'algoritmo deve essere supportato sia in PHP che in node.
Sicuramente esiste un modo standard per farlo?