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

Art*_*pov 5 firebase firebase-authentication google-cloud-functions

在我的项目中,我使用了一系列 GCP 服务,包括 Firestore、Cloud Functions 和 Firebase 身份验证。

鉴于用户能够通过 Firebase 身份验证服务登录,我认为应该可以检查和验证调用我的云功能的用户。问题是我找不到任何文档或如何执行此操作的示例。

我知道有一些特殊的可调用函数,但它不适合我。我正在使用 express 来处理请求。

是否可以从在客户端登录的用户(firebase auth)检索某种 JWT 令牌,然后将其与请求一起发送到我的云功能,然后在那里以某种方式检查它?或者有没有其他机制可以实现上述CF保护?

PS 我看到了这个问题,但这不是我在问什么,因为它与Firebase Functions相关,我说的是Cloud Functions,它非常相似但不完全相同。

Art*_*pov 14

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

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

const token = await firebase.auth().currentUser.getIdToken(true);
Run Code Online (Sandbox Code Playgroud)

现在我们实际上可以将此令牌添加到我们需要的任何请求中。我将在调用 HTTP 触发的云函数时放入请求标头。例如:

...
const headers = {
    'Authorization': token
}
const response = await fetch('CF_URL', {headers});
....
Run Code Online (Sandbox Code Playgroud)

这里最后也是最重要的事情是在服务器端有验证逻辑(在我的例子中是云功能):

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
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3480 次

最近记录:

4 年,2 月 前