0

Ich bin neu in Firebase. Ich habe unten Code gegeben -.Firebase Sicherheitsregeln für nodejs App

var config = { 
 
    apiKey: ".....", 
 
    authDomain: "....", 
 
    databaseURL: ".....", 
 
    storageBucket: "...." 
 
}; 
 

 
firebase.initializeApp(config); 
 

 
function writeData(socialType, userName, name, message) { 
 
    database.ref("/" + socialType + "/" + userName + "/").set({ 
 
     name: name, 
 
     message: message 
 
    }); 
 
} 
 
writeData("fb", "Jhon", "booo1", "message1");

Ich frage mich, was die Sicherheitsregeln für diese Art sein sollte (ich meinen Zugang mit api Schlüsseln, und es gibt kein Login In der Tat auf Feuerbasis NodeJS Bibliothek firebase.auth() die Authentifizierungsmethode existiert nicht). Ich möchte keinen anonymen Zugriff zulassen, ich möchte Zugriff gewähren, wenn ein gültiger API-Schlüssel vorhanden ist.

{ 
 
"rules": { 
 
    ".read": "auth != null", 
 
    ".write": "auth != null" 
 
    } 
 
}

Für diese Sicherheitsregeln I Fehler PERMISSION_DENIED bekommen. Was wahrscheinlich Sinn macht, weil es keine auth gibt, da ich nicht authentifizieren, sondern über API-Schlüssel zugreifen.

HINWEIS: Ich möchte nicht Dienstkonto verwenden. Ich möchte API-Schlüssel verwenden, um auf Daten zuzugreifen (lesen/schreiben)

Antwort

1

Der API-Schlüssel identifiziert Ihr Projekt nur zu den Firebase-Servern. Es authentifiziert Ihren Prozess "node.js" nicht mit Firebase und berechtigt Sie auch nicht zum Zugriff auf Daten in der Datenbank.

Um sich von Ihrem node.js-Prozess mit Firebase zu authentifizieren, müssen Sie einem der methods outlined in the documentation folgen. Alle diese erfordern die Verwendung eines Dienstkontos in irgendeiner Weise, entweder um direkt auf die Datenbank zuzugreifen oder ein benutzerdefiniertes Token zu signieren. Auf diese Weise funktioniert die Firebase-Authentifizierung für serverseitige Prozesse und kann nicht vermieden werden.

+0

Ich werde Sie mehr Anwendungsfall wenig sagen. Ich benutze Cordova (ein JavaScript-Framework, um Cross (Android/iOS) Plattform mobile Anwendung zu schreiben). Also muss ich die Kontoinformationen mit meinem senden, also möchte ich wirklich kein Dienstkonto mit versenden. Außerdem gibt es kein Anmeldeszenario für Nutzer in meiner App. Ich habe mehr von einer Access-Token-Typ-Lösung erwartet. –

1

Die aktuelle Ausgabe mit Regeln ist die:

{ 
 
"rules": { 
 
    ".read": "auth != null", 
 
    ".write": "auth != null" 
 
    } 
 
}

Da es, dass Sie ein Login nicht haben scheint. Wenn der Browsercode die richtigen API-Schlüssel hat, können Sie die Firebase anonymous auth verwenden, um auth! == null zu erlauben, erfolgreich zu sein.

Auch in Zukunft würde ich die Verwendung vorschlagen! == über das! = Reliabilty verbessern