SSO with Firebase

stai usando cookie-parser?

Utilizzo dei reindirizzamenti al posto dei cookie

Ciao a tutti, grazie per tutti i consigli, mi sono bloccato con l’approccio dei cookie perché il mio server si trova su un dominio diverso e Safari è in guerra con i cookie di terze parti. Ho scritto una domanda e risposta su Stack Overflow con un approccio di reindirizzamento, buona autenticazione! :stuck_out_tongue_closed_eyes:

Vorrei solo dire che sarei molto interessato anche io ad avere una facile integrazione dell’autenticazione firebase in discourse.

Hmm, qual è esattamente lo scopo di farlo? Non stai usando l’autenticazione firebase altrove in un’applicazione web oltre a Discourse? Io sĂŹ e non voglio modificare quell’impostazione, preferirei che fosse “locale” (Authentication State Persistence  |  Firebase)

Solo alcune note per chi intraprenderĂ  questo percorso:

  • chiama il tuo cookie “__session” se utilizzi Firebase Hosting. Le regole di riscrittura filtrano tutti gli altri cookie per scopi di caching.
  • vuoi sostituire il codice pertinente sopra con qualcosa di simile per non consentire e-mail non validate (grande rischio per la sicurezza).
      auth
        .verifyIdToken(idToken)
        .then(function (decodedClaims) {
          // In questo caso, stiamo imponendo che l'utente abbia effettuato l'accesso negli ultimi 5 minuti.
          // e che abbia un'e-mail verificata
          if (
            decodedClaims.email_verified &&
            new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
          ) {
            return auth.createSessionCookie(idToken, { expiresIn });
          }
          throw new Error("RICHIESTA NON AUTORIZZATA!");
        })
  • c’è un’impostazione di “reindirizzamento al logout” in Discourse. Probabilmente vorrai usarla per raggiungere un URL che cancella il cookie “__session” (può essere fatto solo tramite una chiamata API backend) in modo che l’utente non venga automaticamente collegato come utente precedente quando tenta di accedere di nuovo.

Dove puoi implementare questo codice?