后端的 Firebase 管理员用于 verifyIdToken 并使用 Firestore
Firebase admin on backend for verifyIdToken and use 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。
如果您想使用这种中间件方法,您必须确保它只访问代码本身授权用户访问的数据。
另见:
- How to make Firebase Functions act as a user instead of being an admin?
如果目标是更严格地控制谁可以登录您的应用程序,请考虑改用自定义身份验证 - 服务器 mints 每个用户的自定义令牌,即然后客户端 SDK 用于登录。
我正在尝试在我的后端使用 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。
如果您想使用这种中间件方法,您必须确保它只访问代码本身授权用户访问的数据。
另见:
- How to make Firebase Functions act as a user instead of being an admin?
如果目标是更严格地控制谁可以登录您的应用程序,请考虑改用自定义身份验证 - 服务器 mints 每个用户的自定义令牌,即然后客户端 SDK 用于登录。