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-userinfo
、x-forwarded-authorization
和 authorization
然后,在 Cloud 运行 服务中,我必须使用 Firebase Admin sdk 来验证传递的令牌并识别发出请求的用户。这就是问题开始的地方,当我尝试验证此 header 的任何令牌时,我收到错误消息:“FirebaseAuthError:解码 Firebase ID 令牌失败。确保您传递了代表 ID 令牌的整个字符串 JWT。 “
我做错了什么吗?如何解码传递给 Api 网关的授权令牌?
检查令牌的有效性已由 API 网关完成。
x-apigateway-api-userinfo 不是 JWT,它是包含用户信息的 base64 编码 json。解码它,你应该是金色的。
我正在尝试为我的云 运行 托管容器设置 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-userinfo
、x-forwarded-authorization
和 authorization
然后,在 Cloud 运行 服务中,我必须使用 Firebase Admin sdk 来验证传递的令牌并识别发出请求的用户。这就是问题开始的地方,当我尝试验证此 header 的任何令牌时,我收到错误消息:“FirebaseAuthError:解码 Firebase ID 令牌失败。确保您传递了代表 ID 令牌的整个字符串 JWT。 “
我做错了什么吗?如何解码传递给 Api 网关的授权令牌?
检查令牌的有效性已由 API 网关完成。
x-apigateway-api-userinfo 不是 JWT,它是包含用户信息的 base64 编码 json。解码它,你应该是金色的。