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
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:
- Pobierz bibliotekę generatora tokenów dla języka / platformy serwera. Węzeł.serwery JS i Java zwykle działają najlepiej.
-
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> });
-
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) { ... });
Jeśli nie ma Klienta dla języka Twojego serwera, np. PHP, użyj tokena dla żądań odpoczynku jako
auth
parametr .-
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'" } }
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 typujesudo
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
- 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.
sudo
, jest niesamowicie niebezpieczne.
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