side node new instalar node.js firebase server

node.js - node - sdk de firebase admin



¿Cómo autenticas un servidor a Firebase? (1)

Actualizado (20160611): si creó su proyecto en https://firebase.google.com , los pasos para acceder a la base de datos desde un servidor son diferentes. Ver esta respuesta: ¿Todavía es posible hacer la verificación de tokens del lado del servidor en Firebase 3?

Hay dos formas de hacerlo: generar un token de autenticación de servidor o utilizar un secreto de Firebase.

Generar un token de servidor Puede usar las mismas bibliotecas de generador de tokens creadas para el inicio de sesión personalizado para generar tokens que puede usar desde su servidor. A continuación, puede proporcionar acceso especial a este servidor desde sus reglas de seguridad.

Estos son los pasos:

  1. Obtenga la biblioteca del generador de fichas para el idioma / plataforma de su servidor. Los servidores Node.js y Java tienden a funcionar mejor.
  2. Genera un token con un uid preseleccionado. Si está escribiendo un servidor node.js, el código podría verse más o menos así:

    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. Use el token para autenticar a su cliente. Aquí hay más código de node.js:

    var ref = new Firebase("https://<your-firebase>.firebaseio.com/"); ref.authWithCustomToken(token, function(error, authData) { ... });

  4. Si no hay un cliente para el idioma de su servidor, por ejemplo, PHP, use el token para sus solicitudes de REST como parámetro de auth .

  5. Actualice sus reglas de seguridad para otorgar permisos especiales a su servidor, como lo identifica el uid, como esta regla simple que permite el acceso de lectura a toda la base de Firebase.

    { "rules": { ".write": false, ".read": "auth.uid === ''my-awesome-server''" } }

  6. Acceda a todos los datos, haga cosas increíbles.

Ventajas

  • Esta es la forma oficialmente recomendada por Firebase para autenticar tu servidor.
  • Su servidor respetará las reglas de validación.
  • El servidor es solo otro usuario. Puede usar reglas de seguridad para proporcionar acceso detallado a sus datos.
  • Debido a que el acceso es muy detallado, es poco probable que un error en su servidor cause daños, como eliminar su nodo raíz.

Secreto de Firebase

Si eres el tipo de desarrollador que disfruta vivir al límite, y escribe sudo en cualquier momento, también puedes autenticarte usando tu secreto de Firebase directamente.

Pero en serio, no hagas esto. Es peligroso.

Razones para no hacerlo

  • Al igual que usar ciegamente sudo , es increíblemente peligroso.
  • Su servidor no respetará sus reglas de validación.
  • Su servidor tiene acceso de lectura / escritura completo a su Firebase. Si tiene un error bastante feo, podría eliminar o dañar datos a los que no tiene acceso empresarial.
  • Su secreto termina en más lugares (potencialmente en los registros de solicitudes de salida, etc.). Estás expuesto a más riesgos si se produce.

Tengo una aplicación escrita en Firebase. Las reglas de seguridad y el código del lado del cliente no son suficientes para hacer que mi aplicación funcione. Necesito conectar un servidor para hacer algunas tareas:

  • Limpiar los datos desnormalizados que son difíciles de limpiar con los controladores onDisconnect
  • Construir índices adicionales de mis datos que van más allá de lo que puedo hacer con las queries