Token firmato tra due PWA: HMAC-SHA256 senza backend

Devi passare l'identità dell'utente da una PWA a un'altra. Entrambe le app girano su progetti Firebase separati. Non condividono alcun database. Non condividono alcuna autenticazione.

Puoi risolvere il problema senza scrivere codice backend. Ti servono solo la Web Crypto API del browser e un URL firmato.

Il problema: Un tool interno chiamato PanelControl deve aprire un altro sito chiamato Orders. Quando un utente clicca su un pulsante, il sito Orders deve sapere chi è l'utente. Gli utenti non dovrebbero dover effettuare nuovamente il login.

Tre modi per farlo:

  • Firebase condiviso: Richiede un database condiviso. Non possibile in questo caso.
  • postMessage: Richiede lo stesso dominio o un popup. Più difficile da gestire.
  • URL firmato con HMAC: Usa un link con un token. Questo funziona perfettamente.

Come funziona: HMAC crea una firma utilizzando una chiave segreta. Il ricevente utilizza la stessa chiave per verificare la firma. Se corrispondono, il mittente è considerato affidabile.

Il workflow:

  1. Lato mittente:
  • Crea un payload con il nome utente e un timestamp.
  • Firma il payload utilizzando HMAC-SHA256.
  • Aggiungi la firma