firebase 3.0を使用してnode.jsサービスを開発しています。これはfirebase 2.4を使用するWebアプリケーションによって呼び出されます。Firebase 3.0トークン:[エラー:Firebase Auth IDトークンに "kid"クレームがありません]
私は、ヘッダの呼び出しで、現在のユーザーFirebase ID token(Auth.$getAuth().token
)を送信し、
var idToken = req.headers["x-access-token"];
auth.verifyIdToken(idToken).then(function(decodedToken) {
var uid = decodedToken.sub;
console.log(decodedToken);
}, function(error){
console.log(error);
});
でこのトークンをvalidadeしようとしている。しかし、私は取得していますよ:
[Error: Firebase Auth ID token has no "kid" claim]
getAuth():
UPDATE
I'haveだけテスト生成を、サーバ側でトークンを検証して、私は同じ問題を取得しています。
var auth = firebase.auth();
var token = auth.createCustomToken(userId, {"premium_account": true});
console.log(token);
auth.verifyIdToken(token).then(function(decodedToken) {
console.log(decodedToken);
}, function(error){
console.log(error);
});
お勧めはありますか?
UPDATE 2:私の場合【解決手段】
問題AngularFire 2.X.Xで生成されたトークンは、自分のサーバーで実行されているFirebase 3.X.Xとの互換性がないということでした。だから、人々はここに書いて、this google group topicに回避策は次のようにjsonwebtokenを使用していたことをいくつかの考えを掘り下げる後: - > [プロジェクトの設定 -
var jwt = require('jsonwebtoken');
jwt.verify(idToken, fbKey, function(err, decoded) {
if (!err){ console.log(decoded); }
});
あなたはfbKey
が新しいfirebaseコンソールにアクセスし、設定に行くを見つけることができます>データベース。
からコピー
。このような異なるバージョンで作成されたトークンを混在させることはできません。ユーザーとしてサーバー上で認証しようとするのではなく、認証されたユーザーがデータベース内の安全なパスに書き込むようにします。サーバーにパスを監視させます。その後、RESTfulサービスとセキュリティをスキップすることができます(認証が必要なセキュリティ保護されたパスに書き込むことができれば、認証され、検証されます)。したがって、この完全な混乱を回避することができます。 – Kato
@Kato nice。しかし、それは厄介です。私はここで、サーバー側で単純なトークンを生成し、同じ 'verifyIdToken'を使ってトークンを検証し、同じエラーを取得しようとするテストを行いました。それは互換性の問題と思われません。とにかく、あなたはデータベースの安全なパスについて言及したことを設定する例を持っていますか? – adolfosrs
私もこの問題を抱えて、自分のようにサーバーのテストを試みました。ここで私の質問を参照してください - [Error:Firebase Auth IDトークンにFirebase 3.0の "kid"クレームがない] [1] [1]:https://groups.google.com/forum/#!topic/firebase-talk/ajMAi1RSsMA (紛らわしい)createCustomTokenによって生成されたトークンは、verifyIdTokenに渡されたものと同じではありません。 –