我有我自己的OAuth 2服务器上的Node.js v4.4.5运行,这一切东西:火力地堡3验证+节点+ jsonwebtoken:无效的自定义标记
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.15.1",
"cors": "^2.7.1",
"express": "~4.1.1",
"firebase": "^3.0.3",
"mongoose": "^4.4.19",
"oauth2orize": "^1.3.0",
"passport": "^0.3.2",
"passport-jwt": "^2.0.0",
"passport-local": "^1.0.0"
"jsonwebtoken": "^7.0.0"
我可以登录并获得JWT是,根据jwt.io,可以解码,但我无法验证,因为我没有公钥。
我得到的JWT并将其发送到signInWithCustomToken,然后我从https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=AIzaSy得到一个错误....
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "INVALID_CUSTOM_TOKEN"
}
],
"code": 400,
"message": "INVALID_CUSTOM_TOKEN"
}
}
在我auth.js控制器,我已创建了智威汤逊,如下所示:
var token = jwt.sign(
{
iss: jwt_config.client_email,
sub: jwt_config.client_email,
aud: 'https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit',
iat: iat,
exp: exp,
uid: user._id,
claims: {
username: user.username,
user_id: user._id,
roles: user.role
}
},
jwt_config.private_key,
{
algorithm: 'RS256'
}
);
res.json({success: true, token: token});
我的服务帐户数据加载到jwt_config:
var jwt_config = require('../config/Firebase-68824d8xxxxx.json');
这是有问题的智威汤逊:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwcm9qZWN0QHByb2plY3QtODE5NTMxNDA4ODMzNzM0MzUwMy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInN1YiI6InByb2plY3RAcHJvamVjdC04MTk1MzE0MDg4MzM3MzQzNTAzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmlkZW50aXR5LmlkZW50aXR5dG9vbGtpdC52MS5JZGVudGl0eVRvb2xraXQiLCJpYXQiOjE0NjQ1ODIzMDEsImV4cCI6MTQ2NDY5MDMwMSwidWlkIjoiNTc0YTJmNWJmODRhZTMwOTdkMjNiZWQ1IiwiY2xhaW1zIjp7InVzZXJuYW1lIjoiamxwZWxsaWNlciIsInVzZXJfaWQiOiI1NzRhMmY1YmY4NGFlMzA5N2QyM2JlZDUiLCJyb2xlcyI6IlN0dWRlbnQifX0.gDghMzXc2sFP4XbMhrU2kxo7u0yte4PT03AbeyzT8oGLYJEHJOAY-kZT0l_fGWDi68AfVCaEiHeFj1a3-M95i4NRTQErWyGPuqqS9ii2m0mDaBseFZumk5iTTWiqY8Tpo6_7fkWGsuM7fnuXjaMKV8jkOW S913EE3DQmXHT5bwPe-KY-xTFxU0P3VPWzbgw5T5lExmzpv0x78Fr-RCy45QhfJ3IeVa-Pyhnp4_NY9VAi1naJLpwKKo7aVq3uLujMK8ViNSgfdXTqI9VNq7KrdgqSKnpdoZ2ph_J6fHBnHtAhV6F_Iy_FyC7Zg1EyC_4vMpBJuMx5UYzy6f1Gm0wvHw
当我收到这回英里登录页面,我把它发送到火力地堡:
firebase.initializeApp(config);
$.ajax({
type: 'post',
dataType: 'json',
url: 'http://ec2-52...compute.amazonaws.com:3000/api/authenticate',
data: $('#loginForm').serialize(),
complete: function(result) {
result = result.responseJSON;
// console.log(JSON.stringify(result, null, 4));
var success = result.success;
if (success) {
var data = result.token;
firebase.auth().signInWithCustomToken(data).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var data = error.message;
// ...
});
} else {
var data = result.message;
}
$('#token').html(data);
}
});
这里是哪里出错弹出。
我很难过,我该怎么办?
我应该看看不同的模块来创建JWT吗?
有什么方法可以了解JWT的具体错误?
谢谢!
由...判断基本上有一百万...有关Firebase 3身份验证系统的问题,可以肯定地说他们的API响应和/或他们的文档不足。作者和维护者的一些答案充其量只是被动的 - 积极地有用,并且在其他时候变得毫无用处。感谢您在解决此问题时发布解决方案! – snakesNbronies