如何处理单个用户帐户多次授权相同的第三方应用程序?

时间:2013-05-13 17:02:30

标签: oauth

我正在开发一个通过OAuth授权的云存储API。第三方应用程序的用户可以允许所述应用程序通过我们的RESTful API访问其文件/数据。

目前,我们限制第三方应用访问用户帐户一次。例如,访问令牌表在使用者列和用户列上具有UNIQUE。这一点很有意义,因为第三方已经知道他们的用户已经与我们的服务绑定并且不需-authorized。

但是,如果此用户在第三方应用上有两个帐户,并且他们希望所述应用在我们的服务上连接到他们的单个帐户两次,该怎么办?鉴于Reddit等服务的多个账户普遍存在,这似乎很可能。

到目前为止,我已经提出了可能的解决方案,其中没有一个是完美的:

  • 在第二次授权请求期间显示错误:这对用户来说似乎是一种令人沮丧的体验,是一种“警察”。
  • 删除上一个令牌:这可能会让用户感到烦恼,因为他们以前的帐户停止工作。即使我们显示警告,也很难解释究竟发生了什么。
  • 返回与第一个请求相同的访问令牌:每次请求访问权限时,都会传递一组权限。第二个请求的权限可能与第一个请求的权限不同。此外,不确定这是否会违反OAuth规范,因为第二个生成的请求令牌未正确绑定到访问令牌。
  • 允许生成两个:这会让人感到困惑,因为当用户访问其屏幕上的所有授权应用程序以撤销其中一个时,他们不知道哪个授权与哪个第三方相关联帐户。在生成请求令牌以识别不同的身份验证时,我们可以要求提供可选的第三方username参数(我们目前已经要求提供非OAuth标准的permission参数)。但是,这似乎不会被99%的开发人员使用,并且可能使应用程序开发更加混乱。

处理这种情况的最佳方法是什么?是否有处理此用例的标准化做法?

1 个答案:

答案 0 :(得分:0)

我认为你的最后一个案例是正确的方法 - 允许生成两个

当用户访问其完全授权应用程序的屏幕时,没有必要两次向他显示同一个应用程序 - 如果用户撤消应用程序访问,您只需删除与该应用程序关联的令牌。也就是说,他对所有令牌的所有授权都将撤销撤销,这很好。