我正在使用Node + express来构建API。我们的想法是让其他开发人员登录并注册他们的应用程序,以便我可以授权访问我的API端点。
exports = passport.use(new FacebookStrategy({
clientID: '999999999',
clientSecret: '999999999',
callbackURL: "http://localhost:3000/auth/facebook/callback"
},function(accessToken, refreshToken, profile, done) {
profile.access_token = accessToken;
db.mongoClient.connect(db.moments, function(err, db){
var user = db.collection('user');
user.find({'facebook':profile.id}).toArray(function(err, docs){
console.log(docs);
})
})
done(null, profile);
}));
我已使用passport facebook strategy进行设置。这允许开发人员登录我的应用程序上的个人资料页面,在那里他们使用我从facebook获得的access_token。我正在使用此access_token允许使用bearer token strategy在我的应用与其应用之间建立连接。
但是,我还想添加另一层安全性。他们应该注册将对我的应用程序进行API调用的域名。这应该保护我免受开发人员将令牌传递给其他开发人员的影响(我的那部分是否正确?)。
问题:如何检查他们确实是从注册域名发出请求?
THX,
答案 0 :(得分:0)
在您的Facebook身份验证后,您知道用户并且您知道他的注册域名。然后从服务器调用注册域中的某个已定义脚本。如果确实是来自该用户的电话,那么他应该返回一些您同意的回复。如果响应正常,则完成身份验证(如果我正确记住某些支付系统对在线商店进行此验证)。
或者更复杂的东西,在facebook认证之后,向注册域名url发送一些临时令牌。然后,用户必须在下次调用时向您发送此临时令牌,并将其交换为最终令牌。
为了确保您的用户在您的服务器调用它们时应该使用https。否则它不可靠。