gpt4 book ai didi

firebase - 我可以使用 Firebase Auth 保护我的云函数,但不使用可调用的云函数吗? (仅限 HTTP 请求)

转载 作者:行者123 更新时间:2023-12-03 22:53:23 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to protect firebase Cloud Function HTTP endpoint to allow only Firebase authenticated users?

(9 个回答)


2年前关闭。
社区在上个月审查了是否重新打开此问题并将其关闭:

重复 这个问题已经回答了,不是唯一的,也没有区别于另一个问题。





在我的项目中,我使用了一系列 GCP 服务,包括 Firestore、Cloud Functions 和 Firebase 身份验证。
鉴于用户能够通过 Firebase 身份验证服务登录,我认为应该可以检查和验证调用我的云功能的用户。问题是我找不到任何文档或如何执行此操作的示例。
据我了解有特价callable functions但它不适合我。我正在使用 express 来处理请求。
是否可以从在客户端登录的用户(firebase auth)检索某种 JWT token ,然后将其与请求一起发送到我的云函数,然后在那里以某种方式检查它?或者有没有其他机制可以实现上述CF保护?
附言
我看到了 this question ,但这与我要问的内容无关,因为它与 Firebase Functions 相关,而我说的是 Cloud Functions,它非常相似但不完全相同。

最佳答案

因此,根据 Dougs 的建议,经过一些额外的谷歌搜索,我找到了适合我的方法。

在客户端,我们需要检索经过身份验证的用户的 id token :

const token = await firebase.auth().currentUser.getIdToken(true);

现在我们实际上可以将此 token 添加到我们需要的任何请求中。我将在调用 HTTP 触发的云函数时放入请求 header 。例如:
...
const headers = {
'Authorization': token
}
const response = await fetch('CF_URL', {headers});
....

这里最后也是最重要的事情是在服务器端有验证逻辑(在我的例子中是云功能):
try {
const userData = await admin.auth().verifyIdToken(tokenFromHeaders);
console.log(userData.uid) // here we have uid of verified user
// check user access or do whatever we need here
} catch (e) {
// something go wrong
}

关于firebase - 我可以使用 Firebase Auth 保护我的云函数,但不使用可调用的云函数吗? (仅限 HTTP 请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com