Firebase云函数的安全HTTP触发器

Firebase云函数的安全HTTP触发器,firebase,firebase-authentication,google-cloud-functions,Firebase,Firebase Authentication,Google Cloud Functions,在触发云功能之前,是否有方法检查用户是否获得firebase授权?(或在函数内)是。您需要将Firebase ID令牌与请求一起发送(例如在AJAX请求的授权头中),然后使用Firebase Admin SDK进行验证。Firebase示例存储库的云中功能有很多。它看起来像这样(为SO post而缩短): const functions=require('firebase-functions'); const admin=require('firebase-admin'); const cors

在触发云功能之前,是否有方法检查用户是否获得firebase授权?(或在函数内)

是。您需要将Firebase ID令牌与请求一起发送(例如在AJAX请求的
授权
头中),然后使用Firebase Admin SDK进行验证。Firebase示例存储库的云中功能有很多。它看起来像这样(为SO post而缩短):

const functions=require('firebase-functions');
const admin=require('firebase-admin');
const cors=require('cors')();
const validateFireBaisedToken=(请求、恢复、下一步)=>{
cors(请求、回复等){
const idToken=req.headers.authorization.split('Bearer')[1];
admin.auth().verifyIdToken(idToken)。然后(decodedIdToken=>{
log('ID令牌正确解码',decodedIdToken);
req.user=decodedIdToken;
next();
}).catch(错误=>{
console.error('验证Firebase ID令牌时出错:',错误);
res.status(403).发送(“未授权”);
});
});
};
exports.myFn=functions.https.onRequest((req,res)=>{
ValidateFireBaisedToken(请求、回复,()=>{
//现在您知道它们已被授权,`req.user`已获得有关它们的信息
});
});

是。您需要将Firebase ID令牌与请求一起发送(例如在AJAX请求的
授权
头中),然后使用Firebase Admin SDK进行验证。Firebase示例存储库的云中功能有很多。它看起来像这样(为SO post而缩短):

const functions=require('firebase-functions');
const admin=require('firebase-admin');
const cors=require('cors')();
const validateFireBaisedToken=(请求、恢复、下一步)=>{
cors(请求、回复等){
const idToken=req.headers.authorization.split('Bearer')[1];
admin.auth().verifyIdToken(idToken)。然后(decodedIdToken=>{
log('ID令牌正确解码',decodedIdToken);
req.user=decodedIdToken;
next();
}).catch(错误=>{
console.error('验证Firebase ID令牌时出错:',错误);
res.status(403).发送(“未授权”);
});
});
};
exports.myFn=functions.https.onRequest((req,res)=>{
ValidateFireBaisedToken(请求、回复,()=>{
//现在您知道它们已被授权,`req.user`已获得有关它们的信息
});
});

由于该问题要求(1)在函数内或(2)在函数之前进行基于身份验证的访问,因此这里有一个用于“before”情况的方法:>

由于每个Firebase项目也是一个Google云项目,GCP允许“私有”功能,您可以在功能之外设置项目范围或每个功能的权限,以便只有经过身份验证的用户才能启动该功能

未经授权的用户在调用函数之前将被拒绝,即使他们试图攻击端点


这是关于和的文档。在撰写本文时,我相信使用这种方法需要用户拥有一个Google帐户进行身份验证

由于问题要求(1)在函数内或(2)在函数之前进行基于身份验证的访问,因此这里有一个用于“before”情况的方法:>

由于每个Firebase项目也是一个Google云项目,GCP允许“私有”功能,您可以在功能之外设置项目范围或每个功能的权限,以便只有经过身份验证的用户才能启动该功能

未经授权的用户在调用函数之前将被拒绝,即使他们试图攻击端点


这是关于和的文档。在撰写本文时,我相信使用这种方法需要用户拥有一个Google帐户进行身份验证

Hi@michael bleigh的可能副本,是否有方法使用firebase admin sdk验证来自我们服务器的呼叫?是否有可能从
cors
获得承诺?如果我们不返回承诺,函数将被终止。嗨@michael bleigh,有没有办法使用firebase admin sdk验证来自服务器的调用?是否可以从
cors
获得承诺?如果我们不返回承诺,函数将被终止。