在移动平台上使用带有 OAuth2 的用户代理流程时,授权服务器无法验证应用程序的 client_id。
因此,任何人都可以通过复制 client_id 来冒充我的应用程序(从而代表我获取所有访问 token ),这适用于 Facebook、Foursquare...
这不是由 OAuth2 管理的?或者我错过了什么?
对于Web应用程序(Web服务器流程),访问 token 存储在服务器端,并使用 key 对客户端进行身份验证。
最佳答案
没有好的答案。 native 应用程序回调通常通过自定义注册的 URI 方案发生(例如:回调重定向 URI 类似于:myapp://oauth?code=xyz123)。不幸的是,任何应用程序都可以声明对给定协议(protocol)方案的所有权并接收回调。
这个问题与尝试锁定任何具有“可信客户端”的协议(protocol)非常相似。想一想 IM 网络将第三方客户端拒之门外的斗争(2000 年代初期)。最终他们放弃了 - 因为无论部署什么客户端和协议(protocol)端点都可以由第 3 方开发人员进行逆向工程。
注意:OAuth WG 邮件列表上也有一些关于此主题的积极讨论:http://www.ietf.org/mail-archive/web/oauth/current/msg08177.html
关于facebook - client_id 的 OAuth2 安全注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730590/