-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Description
[REQUIRED] Environment info
firebase-tools: 8.14.1
Platform: Windows 10
[REQUIRED] Test case
Currently emulating a scenario where a signed in user sends userToken from frontend and backend decoded this token and retrieves uid for fetching data from database.
const firebase = require('firebase/app');
require('firebase/auth');
const config = require('./config/firebaseConfig.json');
const firebaseConfig = {
apiKey: config.apiKey,
authDomain: config.authDomain,
databaseURL: config.projectId,
projectId: config.projectId,
storageBucket: config.storageBucket,
messagingSenderId: config.messagingSenderId,
appId: config.appId,
measurementId: config.measurementId
};
firebase.initializeApp(firebaseConfig);
firebase.auth().useEmulator("http://localhost:9099/");
const serviceAccountKey = require('./config/serviceAccountKey.json');
const admin = require('firebase-admin');
const databaseUrl = `http://localhost:9000/?ns=${config.projectId}`;
admin.initializeApp({
credential: admin.credential.cert(serviceAccountKey),
databaseURL: databaseUrl
});
const perform = async() => {
const email = "test3@gmail.com";
const password = "password";
await admin.auth().createUser({
email: email,
password: password
});
await firebase.auth().signInWithEmailAndPassword(email, password);
const userToken = await firebase.auth().currentUser.getIdToken();
// code fails here where admin is supposed to successfully verify id token
await admin.auth().verifyIdToken(userToken);
};
perform();
[REQUIRED] Steps to reproduce
make sure that the following node packages are installed and firebase emulators for auth, firestore, and database are enabled:
npm install -g firebase-tools
npm install --save firebase
npm install --save firebase-admin
[REQUIRED] Expected behavior
The userToken is decoded properly so that uid is extracted from the token for fetching data.
[REQUIRED] Actual behavior
It fails with Firebase ID token has no "kid" claim. The code is working normally except when using emulator.
WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials.
(node:24084) UnhandledPromiseRejectionWarning: Error: Firebase ID token has no "kid" claim. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.
at FirebaseAuthError.FirebaseError [as constructor]
mjgerace, vajahath, antitoine, vdiaz1130, KYUUUW and 16 morelupas, adarshmadrecha, patelnets, Leocardoso94, mjgerace and 10 more