Ich entwickle gerade einen node.js Dienst mit Firebase 3.0, der von einer Webanwendung aufgerufen wird, die Firebase 2.4 verwendet.Firebase 3.0 Token: [Fehler: Firebase Auth ID Token hat keinen "kid" Anspruch]
Ich schicke den aktuellen Benutzer Firebase ID token (Auth.$getAuth().token
) in meinem Kopf Anruf und versucht, dieses Token validade mit
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);
});
Aber ich bin immer:
[Error: Firebase Auth ID token has no "kid" claim]
getAuth():
UPDATE
I'have gerade getestet Erzeugen und das Token auf der Serverseite Validierung und ich das gleiche Problem bekommen.
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);
});
Irgendwelche Vorschläge?
UPDATE 2: [SOLUTION]
Das Problem war in meinem Fall, dass der mit AngularFire 2.X.X erzeugten Tokens ist nicht kompatibel mit dem Firebase 3.X.X, die in meinem Server laufen. So, nachdem in einigen Gedanken zu graben, dass die Leute hier geschrieben und in this google group topic die Abhilfe war jsonwebtoken wie folgt zu verwenden:
var jwt = require('jsonwebtoken');
jwt.verify(idToken, fbKey, function(err, decoded) {
if (!err){ console.log(decoded); }
});
Sie finden die fbKey
die neue Feuerbasis Konsole Zugriff auf und gehen in Einstellungen -> Projekteinstellungen -> Datenbank.
Das ist nicht wie ein Token geprägt 3.0 unter Verwendung aussieht. Du kannst Token, die von verschiedenen Versionen geprägt sind, nicht mischen und vergleichen. Versuchen Sie nicht, sich auf dem Server als Benutzer zu authentifizieren, sondern Ihre authentifizierten Benutzer in einen sicheren Pfad in der Datenbank zu schreiben. Lassen Sie den Server den Pfad überwachen. Dann können Sie die RESTful-Dienste und die Sicherheit überspringen (wenn sie in einen gesicherten Pfad schreiben können, der Authentifizierung benötigt, werden sie authentifiziert und verifiziert). So können Sie diese ganze Unordnung umgehen. – Kato
@Kato nett. Aber das ist seltsam. Ich habe hier einen Test gemacht, der versucht, ein einfaches Token auf der Serverseite zu erzeugen und das gleiche 'verifyIdToken' zu verwenden, um das Token zu validieren und den gleichen Fehler zu bekommen. Es scheint kein Kompatibilitätsproblem zu sein. Wie auch immer, haben Sie ein Beispiel dafür, was Sie gerade über den gesicherten Pfad in der Datenbank erwähnt haben? – adolfosrs
Ich hatte auch dieses Problem und versuchte den Server wie Sie testen. Siehe meine Frage hier - [Fehler: Firebase Auth ID Token hat keine "kid" Anspruch mit Firebase 3.0] [1] [1]: https://groups.google.com/forum/#!topic/firebase-talk/ajMAi1RSsMA Sieht aus wie (verwirrenderweise) das Token, das von createCustomToken generiert wird, ist nicht das gleiche Token, das an verifyIdToken übergeben wird. –