SSO with Firebase

stai usando cookie-parser?

1 Mi Piace

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.
1 Mi Piace

Dove puoi implementare questo codice?