【问题标题】:Restricting API Calls to a Certain Domain限制对特定域的 API 调用
【发布时间】:2015-05-05 16:41:24
【问题描述】:

我的应用程序使用 JS Facebook API 来使用 Facebook 作为登录/通行证。当您尝试登录时会发生以下情况。

  1. 用户点击 Facebook 登录按钮
  2. Facebook 身份验证
  3. 如果成功。我获取用户的 Facebook ID 和姓名
  4. 在我的 APP 上调用我的 REST API 以检查该 FBID 是否已在我的系统中注册。
  5. 如果已注册,我会编写会话以验证用户是否已通过身份验证。

这很好,因为我不必存储用户名和密码。但我担心有人会在 chrome 中使用 POSTMAN 之类的 REST API 调试器,只需发送 Facebook ID 和用户名,他们就会通过身份验证。

我的问题是什么是保护我的终端的最佳方式,以防止像 POSTMAN 这样的应用程序只输入身份验证所需的字段?我错过了什么吗?任何人都可以为此推荐一个策略吗?

或者使用 CSRF 令牌是解决这个问题的唯一方法?我使用 FuelPHP 作为后端,并使用 AngularJS 和 NgRoutes 做一个单页应用程序。但是每次我在燃料上启用 CSRF 时,传递的令牌与后端的令牌不匹配。

我的印象是,这是由于 javascript 令牌功能位于主页中,ng-view.我知道这可能与 ngRoutes 有关。

http://fuelphp.com/docs/classes/security.html

【问题讨论】:

  • 将用户存储在您的数据库中,但在数据库中为provider 有一个额外字段,例如“facebook”或“myApp”或“twitter”等。外部提供商在用户最初向您发送一些用户数据接受连接到您的应用
  • @charlietfl 例如像在 FB 中一样,我是否也应该存储用户身份验证时它给出的 access_token 和秘密?
  • 老实说...我已经有一段时间没有设置了,也不记得用户同意时返回数据的细节。我将不得不查看文档。但是您也可以随时为该用户分配令牌

标签: angularjs api rest facebook-graph-api fuelphp


【解决方案1】:

使用 Fuel 的 Auth 包。它具有上述所有功能的 Opauth 集成,并且适用于整个社交媒体平台列表,而不仅仅是 facebook。

始终尽量不要重新发明轮子,假设其他人遇到了同样的挑战,解决了问题,并与社区分享了解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2020-01-06
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多