2016-07-12 41 views
7

Sto provando a verificare un backend idToken. L'utente si è connesso con successo al lato client Firebase ma quando provo a verificare l'IDToken sul mio backend ricevo questo messaggio di errore non molto utileIl token ID autore di Firebase ha una richiesta "aud" errata

messaggio

Firebase Auth ID token has incorrect "aud" claim

L'errore sembra essere diventato un po 'più informativo, e foruncoli verso il basso per non avere il nome del progetto nella chiave di autenticazione:

Error: Firebase ID token has incorrect "aud" (audience) claim. Expected "stripmall-0000" but got "617699194096-0aafcvsml0gke61d6077kkark051f3e1.apps.googleusercontent.com". Make sure the ID token comes from the same Firebase project as the service account used to authenticate this SDK. See https://firebase.google.com/docs/auth/server/verify-id-tokens for details on how to retrieve an ID token.

Chiunque abbia la minima idea di quello che potrebbe essere sbagliato? Ricevo il tokenId correttamente dal client in modo che non dovrebbe essere un problema. Approcci sinceri se questo è stato chiesto prima o è banale in qualsiasi altro modo.

firebase.initializeApp({ 
     serviceAccount: { 
      "type": "service_account", 
      "project_id": <project id here>, 
      "private_key_id": <key id goes here>, 
      "private_key": <key goes here> 
      "client_email": <email goes here>, 
      "client_id": <my client id>, 
      "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
      "token_uri": "https://accounts.google.com/o/oauth2/token", 
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
      "client_x509_cert_url": <url goes here> 
     }, 
     databaseURL: <my db url here> 
    }); 

    router.post("/verify", function (req, res) { 
     firebase.auth().verifyIdToken(req.body.idToken).then(function (decodedToken) { 
      var uid = decodedToken.sub; 
      res.send(uid); 
     }).catch(function (error, param2) { 
      console.log(error); // 'Firebase Auth ID token has incorrect "aud" claim' 
     }); 

    }); 
+1

Da quello che capisco, 'aud' è per" pubblico "e in questo caso si riferisce all'ID del progetto. Sei sicuro di avere il project_id corretto lì? –

+0

Beh, sono stati passati direttamente dal file json che hai scaricato, quindi non posso immaginare che ci sarebbe qualcosa di sbagliato in quello ... – Faustus

+0

Sto vedendo anche questo costantemente sbagliato. Ottiene un ulteriore messaggio che dovrebbe essere la chiave del mio pubblico. –

risposta

8

Il tuo problema potrebbe essere che si sta tentando di utilizzare il token JWT restituito da una delle auth() funzioni come firebaseRef.auth().signInWithPopup(). Questi restituiscono un token JWT, tuttavia è probabile che le attestazioni di autenticazione siano errate e non supereranno la verifica entro il verifyIdToken. Ciò è stato confermato dal supporto tecnico di Firebase.

È necessario utilizzare la funzione firebaseRef.auth().currentUser.getToken(). Quel token supererà la verifica.

+1

funziona per me, questo dovrebbe essere accettato come risposta corretta –

0

Se si sta eseguendo localmente, viene visualizzato anche questo messaggio di errore se si dispone della variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS errata. Verificare se la chiave JSON impostata con questa variabile di ambiente corrisponde a quella del progetto.

Problemi correlati