firebase-authentication - 具有 Firebase 身份验证的 GCP Api 网关
问题描述
我正在尝试为我的 Cloud Run 托管容器设置 GCP Api 网关,但我收到了一些关于 Firebase 身份验证的错误。
在 api 规范中,我复制了 api gateway guide 中发布的内容
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 Gateway 发出请求时,一些额外的标头会添加到代理到 Cloud Run 服务的请求中,例如x-apigateway-api-userinfo
,x-forwarded-authorization
和authorization
然后,在 Cloud Run 服务中,我必须使用 Firebase Admin sdk 来验证通过的令牌并识别发出请求的用户。这就是问题开始的地方,当我尝试验证此标头的任何令牌时,我收到一个错误:“FirebaseAuthError:解码 Firebase ID 令牌失败。确保您传递了代表 ID 令牌的整个字符串 JWT。”
我做错什么了吗?如何解码传递给 Api 网关的身份验证令牌?
解决方案
API 网关已经完成了对令牌有效性的检查。
x-apigateway-api-userinfo 不是 JWT,它是包含用户信息的 base64 编码 json。解码它,你应该是金色的。
推荐阅读
- html5boilerplate - html5样板自定义模板
- mysql - How to sort users that have more unread messages to appear first in mysql results
- docker - Docker ASP.NET Core 容器在配置的端口上没有响应
- facebook - 获取在我的 Facebook 页面上喜欢帖子的人的列表
- google-cloud-platform - Cloud PubSub 重复消息触发的 Cloud Functions
- mongodb - 如何根据某些条件从不同的集合中进行 $lookup?
- javascript - 是否有一种平滑的方法可以将功能添加到不同的代码?
- spring-boot - Spring boot 中嵌入 Undertow 的指标
- r - 如何在 ggplot 中将颜色和线型的图例组合成一个图例?
- reactjs - TypeError:无法读取未定义反应的属性“状态”