2016-07-12 17 views
7

私はidTokenバックエンドを検証しようとしています。ユーザーはfirebaseクライアント側に正常にログインしましたが、私は私のバックエンドでidTokenを検証しようとすると、私はこの非常に有用ではないエラーメッセージFirebase認証IDトークンに不正な "aud"クレームがあります

Firebase Auth ID token has incorrect "aud" claim

は、エラーメッセージがもう少し有益になっているようだ、と沸騰取得します認証キーにプロジェクト名が含まれていないことを確認してください:

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.

何が間違っている可能性がありますか?私はクライアントから正しくtokenIdを受け取り、問題ではないはずです。これが以前に尋ねられたか、または他の方法で自明でない場合、誠実なappologies。

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

「aud」は「オーディエンス」を意味し、この場合はプロジェクトIDを指しています。あなたは正しいproject_idを持っていますか? –

+0

さて、ダウンロードしたjsonファイルからまっすぐに渡されたので、そのファイルに何か問題があると想像できません。 – Faustus

+0

これも一貫して間違っています。それは、私の聴衆キーがすべきであるというさらなるメッセージを得る。 –

答えて

8

あなたの問題は、あなたがfirebaseRef.auth().signInWithPopup()のようなauth()機能の一つで返さJWTトークンを使用しようとしていることかもしれません。これらはJWTトークンを返しますが、認証クレームは間違っている可能性があり、verifyIdTokenで検証に合格しません。これは、firebaseの技術サポートによって確認されました。

firebaseRef.auth().currentUser.getToken()機能を使用する必要があります。そのトークンは検証に合格します。

+1

が私のために働く、これは正解として受け入れられるべきである –

0

ローカルで実行している場合、誤ったGOOGLE_APPLICATION_CREDENTIALS環境変数があると、このエラーメッセージも表示されます。この環境変数で設定されたJSONキーがプロジェクトのキーと一致するかどうかを確認します。

関連する問題