Firebase管理后端verifyIdToken和使用Firestore



我正试图在我的后端使用Firebase Admin进行"伪造";通过验证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?
*/

通过Admin SDK访问Firestore总是需要完全的管理权限。无法以验证令牌的用户身份访问Firestore。

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

也看到:

  • 将用户权限从云功能传递到Firestore
  • 如何使Firebase功能充当用户而不是管理员?

如果目标是对谁可以登录你的应用程序有更严格的控制,考虑使用自定义身份验证代替-服务器替换为每个用户定制令牌,然后客户端SDK使用它来登录。

最新更新