Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何验证最终用户身份验证令牌(使用Firebase auth)以调用google云运行端点?_Node.js_Firebase_Authentication_Firebase Authentication_Google Cloud Run - Fatal编程技术网

Node.js 如何验证最终用户身份验证令牌(使用Firebase auth)以调用google云运行端点?

Node.js 如何验证最终用户身份验证令牌(使用Firebase auth)以调用google云运行端点?,node.js,firebase,authentication,firebase-authentication,google-cloud-run,Node.js,Firebase,Authentication,Firebase Authentication,Google Cloud Run,请帮助最终用户使用firebase身份验证在云中运行身份验证 简要说明: 我提交授权:来自firebase函数的Bear+idToken头,idToken通过电子邮件/密码验证firebase用户user1。 我将其提交到云运行实例,并为此user1设置了云运行调用程序角色。 但在云运行日志中,我看到以下错误: 未授权该请求调用此服务。阅读更多 我做错了什么?如何从通过身份验证的用户调用的firebase函数调用云运行端点调用 更多详情: 我有一个简单的firebase应用程序,带有电子邮件/

请帮助最终用户使用firebase身份验证在云中运行身份验证

简要说明: 我提交授权:来自firebase函数的Bear+idToken头,idToken通过电子邮件/密码验证firebase用户user1。 我将其提交到云运行实例,并为此user1设置了云运行调用程序角色。 但在云运行日志中,我看到以下错误:

未授权该请求调用此服务。阅读更多

我做错了什么?如何从通过身份验证的用户调用的firebase函数调用云运行端点调用


更多详情:

我有一个简单的firebase应用程序,带有电子邮件/密码firebase身份验证。 当用户1时,说test@test.com如果使用电子邮件/密码进行身份验证,我将使用firebase.User.getIdToken()获取该用户的Id令牌,并将其提交给firebase函数

在firebase功能端,我提取用户令牌并将其提交给google cloud运行端点,作为授权:承载+令牌头:

export const getData = functions.https.onRequest(
  async (req, response) => {
    cors(req, response, async () => {
      getToken(req)
        .then(async (token: any) => {
              const options = {
                url: cloud_run.CLOUD_RUN_ENDPOINT,
                headers: {
                  Authorization: `Bearer ${token}`,
                },
              };
           request.get(options, async function (err, resp) {
             //Processing the result
           });
    //etc
    
在google云运行中,我部署了云运行端点。 在“云运行权限”选项卡上,我为我的user1设置了云运行调用者角色test@test.com.

但当我执行上述firebase函数getData时,我在云运行日志中看到以下错误:

2020-10-29 14:30:13.498 MSK获得4010 B 0ms@root+request/1.6.1节点/v10.22.0 linux/4.4.0 linux/x64 https:// 未授权该请求调用此服务。阅读更多

根据本手册: 对于 firebase身份验证:

我需要实现Identity Platform或Firebase身份验证(完成),并手动验证他们的凭据。
如何手动验证凭据?提交承载授权令牌后我应该做什么?

要实现这一点,您有两种解决方案:

  • 在未经验证的云运行服务中自行检查令牌。最近发生了一件大事。就我个人而言,我不喜欢这个解决方案,因为如果有攻击,这取决于你的服务来管理这个高流量,你来支付
  • 使用代理。(旧的)云端点可以实现这一点,我在1年前(使用API密钥安全定义,但使用API密钥更改并使用它!)。它已经很老了,因为今年夏天发布了一个新的服务,名为,今天,它是一个完全由谷歌管理的云端点(今天的功能是相同的,但API网关将不断发展;不确定云端点!)

您不能使用Firebase身份验证凭据对受Google Cloud IAM保护的云运行请求进行身份验证。您必须提供IAM认可的身份,这通常意味着服务帐户。如果您想使用Firebase Auth,您必须允许任何人调用端点,并在后端代码中使用Firebase Admin SDK检查验证凭据。@DougStevenson得到了。。。谢谢你的回答!