【问题标题】:Getting the domain name making requests to my API endpoints获取向我的 API 端点发出请求的域名
【发布时间】:2015-12-24 11:37:26
【问题描述】:

我正在使用 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 调用的域名。这应该可以保护我免受开发人员将令牌传递给其他开发人员的影响(我说对了吗?)。

问题:我如何检查他们是否确实从注册的域名发出请求?

谢谢,

【问题讨论】:

    标签: node.js api express oauth-2.0


    【解决方案1】:

    在您的 facebook 身份验证后,您知道用户并且您知道他的注册域。然后从服务器调用注册域中的某个已定义脚本。如果确实是来自该用户的呼叫,那么他应该返回一些您同意他的响应。如果响应正常,则完成身份验证(如果我没记错的话,某些支付系统会为在线商店进行此验证)。

    或者更复杂的东西,在 facebook auth 之后,向注册的域 url 发送一些临时令牌。然后用户必须在下次调用此临时令牌时发送给您,然后您将其交换为最终令牌。

    为了安全起见,您的用户应该在您的服务器调用他们时使用 https。否则不可靠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-10
      • 2017-05-05
      • 2013-09-14
      • 1970-01-01
      • 2016-12-29
      • 2021-01-04
      • 2021-11-04
      • 1970-01-01
      相关资源
      最近更新 更多