如何限制OAuth“scope”参数的允许权限集(限制范围)

时间:2012-04-03 00:29:35

标签: oauth scope facebook-apps facebook-oauth facebook-login

我想将Facebook用作我的应用程序(网站)用户的身份验证源。我不希望我的应用程序有任何基本和电子邮件权限。因此,我的应用程序必须无法发布到用户的墙上。换句话说,我想限制scope参数的允许值集,我希望在应用程序的配置页面上(在Facebook站点本身上)发生此限制。

通常情况下这很容易,只需为OAuth网址/电话的范围参数指定“电子邮件”。

但是在这种情况下还有另一个因素,即:黑客可以访问应用并更改OAuth调用以指定更多权限。然后,毫无戒心的用户通常(或至少可能)授予这些权限,黑客将能够获取OAuth令牌并代表该用户执行操作。

我对讨论这个问题的原因不感兴趣,只是发现有一种方法可以指定我的应用程序只能为scope参数使用一组特定的值。理想情况下,范围限制的规范在Facebook本身的应用程序配置页面中完成。

但是,我对涉及使用SAML,OpenID或其他一些身份验证机制的替代解决方案感兴趣(即使我无法获取用户的电子邮件地址)。我对使用RPX不感兴趣。

请注意:这是一个复杂的问题,而不是一个简单的问题。我已经广泛搜索了一个答案,并且发现了与此问题相反的内容。

1 个答案:

答案 0 :(得分:0)

我很确定在应用程序配置级别限制范围是不可能的。

我会说最整洁的解决方法是在注册时查询用户的权限,检查它们是否与允许的权限相匹配,并订阅(权限实时更新)[http://developers.facebook.com/文档/参考/ API /实时/]。如果授予用户的权限发生任何变化,您的应用程序将收到通知。

这应该允许您通过应用程序逻辑阻止任何服务器端API调用,或者(禁止)[https://developers.facebook.com/docs/reference/api/application/#banned]用户升级权限。