【问题标题】:How to handle authorizing the same third-party application multiple times for a single user account?如何为单个用户帐户多次授权相同的第三方应用程序?
【发布时间】:2013-05-14 15:40:35
【问题描述】:

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

目前,我们只限制第三方应用访问用户帐户一次。例如,Access Token 表在消费者列和用户列上有一个 UNIQUE。乍一看,这是有道理的,因为永远不应该将用户发送到我们的服务以两次授权第三方应用程序,因为第三方已经知道他们的用户已经绑定到我们的服务并且不需要重新- 授权。

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

以下是我迄今为止提出的可能解决方案,但没有一个是完美的:

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

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

【问题讨论】:

    标签: oauth


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2017-03-01
      相关资源
      最近更新 更多