使用隐式授权在OAuth应用程序中模拟客户端

时间:2013-09-26 22:30:25

标签: android ios facebook security oauth

从OAuth草稿中隐式section

  

在隐式授权流程期间发出访问令牌时,   授权服务器不对客户端进行身份验证。

现在,让我们假设:

  1. 我有Android或iOS应用。
  2. 我使用OAuth隐式授权来获取某些资源的访问令牌。这将通过网络视图发生。
  3. 用户授权我的应用程序使用某些资源。这意味着:
    1. 他在拥有该资源的原始服务中进行了身份验证。
    2. 网络视图将在那里举行会议。
  4. 有一个恶意的Android或iOS应用试图使用我在我的应用中使用的client_id redirect_uri来获取访问令牌。他也有相同的fb://blabla,在原生应用中可以是client_id
  5. 据我了解,这个恶意应用程序也可以使用Web视图获取最初属于我的client_id的访问令牌。这是因为用户甚至不会意识到他正在使用的{{1}},这是我的,因为3.1和3.2。
  6. 他可以用它来做有害的事情,除了速度限制(在FB和Twitter等几个提供商中),我的客户将因过度使用而不得不这样做。
  7. 我有办法阻止这种情况吗?

2 个答案:

答案 0 :(得分:0)

link中的第一句话:

  

恶意客户端可以冒充其他客户端并获取访问权限   受保护的资源,如果模拟的客户端失败,或者是   无法保密其客户凭证

我想这是唯一的方法。此外,您可以在clientId上应用一些加密,加密存储并在验证用户之前解密它。

答案 1 :(得分:0)

这是一个老问题,但仍然无法解决。 隐式流本质上是一个不太安全的流,仅当您无法安全地保存客户端ID和机密并执行代码流(混合流)时(如在单页应用程序中),在使用移动应用程序或Web应用程序时,才应使用隐式流建议在服务器端使用代码流来防止此类冒充。

现在换句话说,我不是移动开发人员,所以我不知道“魔术链接”是如何工作的,但是我认为如果2个应用程序将定义相同的url(用于重定向uri),它将失败,但是多数民众赞成在我的理由值得检查...