Ric*_*ell 9 security rest mobile web-services oauth
我正在写一个允许用户通过Facebook注册的手机应用程序.一旦注册,用户就可以通过我将托管的RESTful Web服务访问个性化信息.
我见过各种移动应用似乎使用类似的设置,但只向用户提供Facebook(或Twitter)OAuth身份验证.我想知道这是怎么做到的?
我认为,为了保护这个Web服务,我可以使用HTTPS的HTTP基本身份验证,用户的Facebook OAuth访问令牌作为他们的密码.
这样安全吗?当其他应用程序仅通过Facebook注册用户时,如何处理安全性?
Tro*_*ord 11
使用此类格式的应用通常会执行以下操作:
因此 - 在您的应用程序中,您通常会存储用户的FB ID,当您提出数据请求(或发送到墙上的请求等)时 - 您提交应用程序密钥+用户的FB ID,以及您需要提供的任何行动信息.然后,FB服务将回复您有权查看的数据 - 或执行操作,只要您有权执行该操作即可.
在RESTful环境中,诀窍在于您应该完全无状态 - 这意味着不会跟踪任何会话.这很好,但是 - 因为您的应用程序已经拥有其应用程序密钥 - 所以您只需要每个请求的用户FB ID.如果您只是将ID插入cookie中或者在客户端管理它就足够了.这是怎么回事?
当您使用Facebook注册应用程序时,您必须提供一个URL,您将在该URL上托管该应用程序.这主要是为了支持跨站点cookie和CORS请求.换句话说:只要您的请求来自FB识别的与您的应用密钥相关联的URL,FB就会知道您的网站上有哪个用户 - 因为它可以完全访问自己的Cookie.
那么,在尝试使用FB启用您的网站时,这对您意味着什么?
它本质上意味着FB成为您的登录系统.您声明以下内容:
"只要FB说用户就是他们所说的人 - 我也相信它."
因此 - 当用户到达您的站点并单击"使用Facebook登录"按钮时 - 您的站点将返回成功或失败.您可以通过查看Facebook Developers网站,特别是以下参考资料,获得有关如何实现此信息的更多信息:
一旦FB返回一个表示成功的令牌 - 您可以断言通过FB API获取信息的人是使用您站点的人.因此 - 例如,如果您将FB ID作为主键存储在数据库中 - 您现在可以根据该值从您自己的API中过滤结果.
往返可能看起来像:
希望这是有帮助的.如果您有任何疑问 - 请在评论中提问,我会尽量添加更多详细信息.
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |