使用托管剥离的Firebase功能进行身份验证

时间:2019-05-27 19:06:23

标签: firebase firebase-authentication google-cloud-functions token firebase-hosting

我有Firebase函数后端rest api和自定义域Firebase托管指向它,因此我不会将自己锁定到Firebase提供的域。

目前,我可以通过3个网址访问我的后端。

  1. https://us-central1-my-project.cloudfunctions.net/app-firebase提供的用于直接调用函数的默认URL。
  2. https://my-project.firebaseapp.com/api-Firebase提供的默认托管,将/api源重写为app函数。
  3. https://my-custom-domain.com/api-我在Firebase中设置的自定义域,将/api源重写为app函数。

现在,除了一个例外,我可以在任何一个方面达到我的后端。 我已经基于https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint

在我的函数中添加了身份验证要求

例如,我的客户端发送Authorization: Bearer IdToken,然后Express中间件读取它并使用Firebase Auth进行验证。

我的问题是,当客户端通过第三个url访问后端时,请求中没有Authorization头。第一和第二工作正常。

有人知道我必须配置什么才能正确转发标头吗?

谢谢

P.S .:这是我的托管配置:

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],    
    "rewrites": [
      {
        "source": "/api/**",
        "function": "app"
      }
    ]
  }
}

1 个答案:

答案 0 :(得分:1)

已解决,问题如下:

我拥有mydomain.comwww.mydomain.com。我的Firebase托管设置为从www提供服务,而mydomain.com仅重定向到www.mydomain.com。我已经设置客户端调用mydomain.com而不是www.mydomain.com。因此,重定向剥离标头。我要做的就是将我的客户指向www。