Domanda Come si autentica un server su Firebase?


Ho un'app scritta su Firebase. Le regole di sicurezza e il codice lato client non sono abbastanza per far funzionare la mia app. Devo connettere un server per fare alcune attività:

  • Ripulire i dati denormalizzati che è difficile da pulire usando OnDisconnect gestori
  • Costruire indici aggiuntivi dei miei dati che vadano al di là di ciò che posso fare con interrogazioni

38
2018-03-24 19:10


origine


risposte:


Aggiornato (20160611): se hai creato il tuo progetto su https://firebase.google.com, i passaggi per accedere al database da un server sono diversi. Vedi questa risposta: È ancora possibile eseguire la verifica lato server dei token in Firebase 3?

Esistono due modi per farlo: generare un token di autenticazione del server o utilizzare un segreto di Firebase.

Genera un token del server Puoi usare lo stesso librerie di generatori di token creato per l'accesso personalizzato per generare token che è possibile utilizzare dal proprio server. È quindi possibile fornire un accesso speciale a questo server dalle regole di sicurezza.

Ecco i passaggi:

  1. Ottenere il libreria del generatore di token per la lingua / piattaforma del tuo server. I server Node.js e Java tendono a funzionare meglio.
  2. Genera un token con un UID preselezionato. Se stai scrivendo un server node.js, il codice potrebbe essere simile a questo:

    var FirebaseTokenGenerator = require("firebase-token-generator");
    var tokenGenerator = new FirebaseTokenGenerator("<your-firebase-secret>");
    var token = tokenGenerator.createToken(
       {uid: "my-awesome-server"}, 
       { expires: <far_into_the_future_seconds> });
    
  3. Usa il token per autenticare il tuo cliente. Ecco di più il codice node.js:

    var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
    ref.authWithCustomToken(token, function(error, authData) {
      ...
    });
    
  4. Se non ci sono client per la lingua del tuo server, ad es. PHP, usa il token per le tue richieste REST come auth parametro.

  5. Aggiorna le tue regole di sicurezza per concedere autorizzazioni speciali al tuo server, come identificato dall'uid, come questa semplice regola che consente l'accesso in lettura all'intero Firebase

    {
        "rules": {
            ".write": false,
            ".read": "auth.uid === 'my-awesome-server'"
        }
    }
    
  6. Accedi a tutti i dati, fai cose fantastiche.

vantaggi

  • Questo è il modo ufficialmente raccomandato da Firebase per autenticare il tuo server.
  • Il tuo server rispetterà le regole di convalida.
  • Il server è solo un altro utente. Puoi usare le regole di sicurezza per fornire un accesso a grana fine ai tuoi dati.
  • Poiché l'accesso è a grana fine, è improbabile che un errore nel server possa causare danni, come eliminare il nodo radice.

Firebase segreto

Se sei il tipo di sviluppatore che ama vivere ai margini e tipi sudo alla caduta di un cappello, puoi anche autenticarti usando direttamente il tuo segreto di Firebase.

Ma seriamente, non farlo. È pericoloso.

Motivi per non farlo

  • Proprio come usare ciecamente sudo, è incredibilmente pericoloso.
  • Il tuo il server non rispetterà le regole di convalida.
  • Il tuo server è completamente letto / Scrivi l'accesso al tuo Firebase. Se ha un bug abbastanza brutto, lo fa potrebbe cancellare o corrompere i dati che non hanno accesso di business.
  • Il tuo il segreto finisce in più punti (potenzialmente nei registri delle richieste in uscita, eccetera). Sei esposto a più rischi se esce.

81
2018-03-24 19:10