web-dev-qa-db-fra.com

Authentification Firebase en tant qu'administrateur

Existe-t-il un moyen de m'authentifier auprès de Firebase en tant qu'administrateur d'une base de feu pour un accès complet en lecture/écriture (a déjà des règles de sécurité protégeant certaines parties), ou devrais-je écrire une règle de sécurité qui me permet en quelque sorte d'accéder à la base de données complète, par exemple en fournissant un certain mot de passe/clé.

Existe-t-il une manière standard ou suggérée de procéder?

35
Patrick DeVivo

Voir ceci pour la 'dernière' documentation.

authWithCustomToken est désormais signInWithCustomToken (Firebase version 3.x)

Exemple tiré de la documentation:

firebase.auth().signInWithCustomToken(token).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    if (errorCode === 'auth/invalid-custom-token') {
        alert('The token you provided is not valid.');
    } else {
        console.error(error);
    }
});
4
BonifatiusK

La réponse d'Andrew ne fonctionnera que si vous vous authentifiez en dehors de votre code côté client (sinon vous ne devriez pas utiliser votre MY_SECRET évidemment). Étant donné que de nombreuses personnes, comme moi, utilisent Firebase pour éviter le code du serveur, voici une autre réponse.

Dans la plupart des applications Firebase, vous avez probablement un objet "Utilisateurs" en plus de votre simple objet de connexion "auth" (qui ne stocke que les e-mails et les mots de passe). Vous pouvez ajouter un "isAdmin" ou "isModerator" (ou ce que vous voulez) à chaque $ utilisateur dans l'objet "Users".

Et puis vos règles ressembleraient à ceci (en supposant que votre auth.id correspond à votre clé utilisateur $):

{
  "rules": {
    "someObject": {
      ".write": "root.child('Users').child(auth.uid).child('isAdmin').val() == true"
    }
  }
}
50
Kyle

Oui il y a. Vous devez simplement vous authentifier à l'aide d'un secret Firebase au lieu d'un jeton d'authentification. c'est à dire.

firebaseRef.auth(MY_SECRET);

Vous pouvez trouver le secret dans la section Authentification de Forge.

17
Andrew Lee

Selon la documentation , vous devez utiliser firebaseRef.authWithCustomToken.

Exemple;

firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
  if(!error) {
    // You are authenticated
  }
});

firebaseRef.auth est désormais obsolète, utilisez firebaseRef.authWithCustomToken au lieu.

15
Matt