Firebase アプリで Google API Gateway を使用して、ユーザーがサインインしているかどうかを確認しています。ここの API Gateway のドキュメントでは、転送されたX-Apigateway-Api-Userinfo
ヘッダーを使用してユーザー情報を取得することをお勧めします。
API Gateway は X-Apigateway-Api-Userinfo の認証結果をバックエンド API に送信します。元の Authorization ヘッダーの代わりに、このヘッダーを使用することをお勧めします。このヘッダーは base64url でエンコードされており、JWT ペイロードが含まれています。
base64url でエンコードされているため、これをデコードしてログイン ユーザーの情報を取得するには、追加のサーバー側ロジックが必要です (デコードされたオブジェクトは、Firebase Auth Admin SDK のDecodedIdTokenに対応すると想定しています)。
一方、API Gateway は元のAuthorization
ヘッダーを変更しますが、最初に という名前の別のヘッダーにコピーすることがわかりましたX-Forwarded-Authorization
。これは、次のようなことができることを意味します。
// authHeaders = 'Bearer ...'
const authHeaders = headers['X-Forwarded-Authorization'];
const token = authHeaders.split(' ')[1]
const decodedToken = await admin.auth().verifyIdToken(token)
私が見つけたのは、同じ情報を取得するためのより簡単な (そしてより適切に文書化された) 方法です。これは悪い考えですか?X-Apigateway-Api-Userinfo
代わりにヘッダーが推奨される他の理由があるかどうかはわかりません。