【问题标题】:Firebase admin on backend for verifyIdToken and use Firestore后端的 Firebase 管理员用于 verifyIdToken 并使用 Firestore
【发布时间】:2021-04-24 17:05:07
【问题描述】:

我正在尝试在我的后端使用 Firebase 管理员通过验证 Id 令牌来“伪造”客户端身份验证,以便从后端使用 firestore。

这个想法是将我的服务器用作我的客户端和 Firestore 之间的中间件

我可以在后端初始化 FirebaseAdmin 并从客户端正确地 verifyIdToken(),但我不知道在那之后使用 firestore。各位大神能不能给我个方法?

import * as firebaseAdmin from 'firebase-admin';
import firebaseServiceAccountKey from './firebaseServiceAccountKey.json';

if (!firebaseAdmin.apps.length) {
  firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(
      firebaseServiceAccountKey
    ),
    databaseURL: ##########################,
  });
}

// This is working 
function getUser(token) {
  return firebaseAdmin
    .auth()
    .verifyIdToken(token)
    .then((decodedToken) => {
      return decodedToken;
    })
    .catch((error) => {
      return error
    });
}

/* 
Now I want to use Firestore authenticated with this token, should I 
import firebase from "firebase" 
and then try auth() with token?
*/

【问题讨论】:

    标签: node.js firebase google-cloud-firestore firebase-authentication firebase-admin


    【解决方案1】:

    通过 Admin SDK 访问 Firestore 始终具有完全的管理权限。无法以您验证其令牌的用户身份访问 Firestore。

    如果您想使用这种中间件方法,您必须确保它只访问用户在代码本身中获得授权的数据。

    另见:


    如果目标是更严格地控​​制谁可以登录您的应用,请考虑改用自定义身份验证 - 服务器为每个用户铸造自定义令牌,客户端 SDK然后用于登录。

    【讨论】:

    • 哦,我明白了,感谢您的回复!所以,如果我想为 Firestore 应用身份验证安全,我必须使用管理员身份验证,然后将我的逻辑限制在我的 API 中,对吗?你认为它安全吗?例如,我的服务器使用 GraphQL,客户端在某些请求中发送 firebase 身份验证令牌。在这种情况下使用 firebase admin(auth 和 firestore)是否安全?
    • 可以受到保护,但这取决于您的技能水平和编写代码以强制执行您的安全要求的努力。使用正确的代码,它可以像使用正确的 Firebase 安全规则一样安全。
    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 2020-06-21
    • 2018-11-15
    • 2020-09-07
    • 1970-01-01
    • 2018-11-14
    • 2021-03-21
    相关资源
    最近更新 更多