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