Open5
Google API Gateway のヘッダーと認証トークン
構成としては下記の通り
詰まっているポイント
- クライアントから渡った id_token が バックエンドで検証する(https://firebase.google.com/docs/auth/admin/verify-id-tokens?hl=ja の
verify_id_token()
)際に上書きされてしまう模様
it overrides the original Authorization header when the backend address is specified by x-google-backend in the API config.
どうやら X-Forwaded-Authorization
に元のトークンが置いてありそうで、自前で検証する際はこっちを使えばよさそう?
推奨されているやり方だと X-Apigateway-Api-Userinfo
に署名済みの JWT が入っているので無理して自前で検証しなくてもいいかもしれない。
そもそも API Gateway でトークンの認証ができているので、やはりダブルチェックの目的以外では必要ないのかもしれない?
X-Apigateway-Api-Userinfo
と X-Forwaded-Authorization
たしかに発見。とても長いので一見同じように見えるが両者値が異なっているのでここをバックエンド側でうまく使うと良さそう!
Headers({..., 'authorization': 'Bearer ey...', 'x-apigateway-api-userinfo': 'ey...', 'x-forwarded-authorization': 'Bearer ey...', ...})
実際に似たユースケースの stackoverflow の投稿も参考にしました。