如何使Firebase Functions充当用户而不是管理员?

时间:2018-09-05 02:55:23

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

我的客户端应用程序正在通过Firebase Functions创建的API访问Firestore。但是,Firebase函数会导入firebase-admin,从而绕过所有定义的安全规则。有什么方法可以使我的HTTP触发Function充当特定用户(例如,通过将访问令牌从客户端传递到服务器),从而使Function也可以在Firebase Functions的影响下工作。

3 个答案:

答案 0 :(得分:2)

目前无法执行此操作。用于节点的Firestore SDK无法以特定的经过身份验证的用户来限制其对数据库的访问。

请注意,这与Realtime Database SDK不同,后者允许您scope to a uid

答案 1 :(得分:0)

我认为可以通过admin-sdk访问Firestore,但是如果您使用REST APIs to access Firestore,则可以将Firestore限制为登录用户。

  

对于身份验证,Cloud Firestore REST API接受Firebase身份验证ID令牌或Google Identity OAuth 2.0令牌。您提供的令牌会影响您请求的授权:

     

使用Firebase ID令牌对来自应用程序用户的请求进行身份验证。对于这些请求,Cloud Firestore使用Cloud Firestore安全规则来确定请求是否得到授权。

答案 2 :(得分:0)

您可以从req.headers中读取承载令牌,然后使用admin.auth().verifyIdToken(token)进行验证,请参见https://www.toptal.com/firebase/role-based-firebase-authentication