0

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代わりにヘッダーが推奨される他の理由があるかどうかはわかりません。

4

1 に答える 1