Jak uwierzytelnić serwer do Firebase?

Mam aplikację napisaną na Firebase. Zasady bezpieczeństwa i Kod po stronie klienta nie są wystarczające, aby moja aplikacja działała. Muszę podłączyć serwer, aby wykonać kilka zadań:

  • Czyszczenie denormalizowanych danych, które są trudne do czyszczenia za pomocą OnDisconnect handlers
  • budowanie dodatkowych indeksów moich danych, które wykraczają poza to, co mogę zrobić z queries
Author: mimming, 2015-03-24

1 answers

Zaktualizowano (20160611): jeśli utworzyłeś swój projekt na https://firebase.google.com , kroki dostępu do bazy danych z serwera są różne. Zobacz tę odpowiedź: czy jest jeszcze możliwość weryfikacji tokenów po stronie serwera w Firebase 3?

Można to zrobić na dwa sposoby: wygenerować Token auth serwera lub użyć Firebase secret.

Generowanie tokena serwera Możesz użyć tych samych bibliotek token generator utworzonych dla Niestandardowe Logowanie do generowania tokenów, które można wykorzystać z serwera. Następnie możesz zapewnić specjalny dostęp do tego serwera za pomocą reguł bezpieczeństwa.

Oto kroki:

  1. Pobierz bibliotekę generatora tokenów dla języka / platformy serwera. Węzeł.serwery JS i Java zwykle działają najlepiej.
  2. Wygeneruj token z wstępnie wybranym identyfikatorem uid. Jeśli piszesz węzeł.serwer js, kod może wyglądać mniej więcej tak:

    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. Użycie token do uwierzytelnienia klienta. Tu jest więcej węzłów.kod js:

    var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
    ref.authWithCustomToken(token, function(error, authData) {
      ...
    });
    
  4. Jeśli nie ma Klienta dla języka Twojego serwera, np. PHP, użyj tokena dla żądań odpoczynku jako auth parametr .

  5. Zaktualizuj swoje zasady bezpieczeństwa, aby nadać specjalne uprawnienia serwerowi, zidentyfikowanemu przez uid, jak ta prosta zasada, która umożliwia dostęp do odczytu całej bazy Firebase

    {
        "rules": {
            ".write": false,
            ".read": "auth.uid === 'my-awesome-server'"
        }
    }
    
  6. Dostęp do wszystkich danych, zrobić niesamowite rzeczy.

zalety

  • jest to oficjalnie zalecany sposób uwierzytelnienia serwera Firebase.
  • Twój serwer będzie przestrzegał zasad walidacji.
  • serwer to tylko kolejny użytkownik. Możesz użyć reguł bezpieczeństwa, aby zapewnić drobnoziarnisty dostęp do swoich danych.
  • ponieważ dostęp jest drobnoziarnisty, jest mało prawdopodobne, że błąd na serwerze spowoduje szkody, takie jak usunięcie węzła głównego.

Firebase secret

Jeśli jesteś typem dewelopera, który lubi żyć na krawędzi i typuje sudo w mgnieniu oka możesz również uwierzytelnić się bezpośrednio przy użyciu tajemnicy bazy ognia. Ale poważnie, nie rób tego. To niebezpieczne.

powody, by tego nie robić

    Podobnie jak ślepe używanie sudo, jest niesamowicie niebezpieczne.
  • Twój serwer nie będzie przestrzegał Twoich zasad walidacji.
  • Twój serwer pełny odczyt / dostęp do zapisu twoja baza ogniowa. Jeśli ma wystarczająco brzydki robak, to może usunąć lub uszkodzić dane, do których nie ma dostępu żadna firma.
  • Twój tajne kończy się w większej liczbie miejsc (potencjalnie w wychodzących dziennikach żądań, itp.). Jesteś narażony na większe ryzyko, jeśli się wydostanie.
 81
Author: mimming,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:32