GCP Api 带有 Firebase 身份验证的网关

GCP Api Gateway with Firebase Auth

我正在尝试为我的云 运行 托管容器设置 GCP Api 网关,但我收到一些关于 Firebase 身份验证的错误。

在 api 规范中,我复制了 api 网关指南

中发布的内容
  firebase:
    authorizationUrl: ""
    flow: "implicit"
    type: "oauth2"
    x-google-issuer: "https://securetoken.google.com/{{ project_id }}"
    x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"
    x-google-audiences: "{{ project_id }}"

并在端点路径中添加了安全条目

security:
   - firebase: []

当我通过 Api 网关发出请求时,一些额外的 header 被添加到代理到云 运行 服务的请求中,例如 x-apigateway-api-userinfox-forwarded-authorizationauthorization

然后,在 Cloud 运行 服务中,我必须使用 Firebase Admin sdk 来验证传递的令牌并识别发出请求的用户。这就是问题开始的地方,当我尝试验证此 header 的任何令牌时,我收到错误消息:“FirebaseAuthError:解码 Firebase ID 令牌失败。确保您传递了代表 ID 令牌的整个字符串 JWT。 “

我做错了什么吗?如何解码传递给 Api 网关的授权令牌?

检查令牌的有效性已由 API 网关完成。

x-apigateway-api-userinfo 不是 JWT,它是包含用户信息的 base64 编码 json。解码它,你应该是金色的。