2011-02-16 42 views
12

假设我们有一个OAuth2用户实现一个支持“读”和“写”的范围。处理OAuth2实现的访问令牌和范围的最佳实践?

我检索一个访问令牌“f482c829”与“读”的范围。如果我改变想法,现在想读+写权限,并以“读”和“写”再授权范围你:

现有的访问令牌和
  • 更新范围返回同样的道理“f482c829”?
  • 如果使用同样的道理,要求在访问令牌,如果使用RESPONSE_TYPE =代码更新范围之前收回? (我认为是)
  • 现有的访问令牌,并返回一个刷新令牌“zf382nL”更新范围?
  • 创建一个全新的令牌离开“f482c829”,其范围是否完整?

如果您在每个作用域的每次创建一个新的令牌,您最终不得不在每个授权和不同的权限处存储多个访问令牌。我一直犹豫要这样实施。

的OAuth2用户规范(草稿-12),遗憾的是并没有解决任何这一点。

回答

5

在Facebook的情况下,资源服务器基本上是与授权服务器相同。 所以他们做“使用现有令牌”的方式。 它允许用户禁用facebook.com网站上的每个范围。 关于刷新令牌,您不需要建立新的刷新令牌。 (当然你也可以做到这一点虽然)。 已有刷新令牌也将与所有范围进行连接。

在谷歌的情况下(也许雅虎太),资源服务器是从授权服务器完全不同。 许多资源服务器(Docs,Buzz等)接受建立单一授权服务器的访问令牌。 在这种情况下,“建立新的令牌”的方式似乎更好。

在Twitter的案例(也许你的情况),都好像。

另外,以任何方式,当你需要撤销所有令牌的客户端用户吊销客户端访问。 用户不是撤销“令牌”,而是“客户端”。

由于开发商应预先登记REDIRECT_URI,同时使用在网站和移动都觉得棘手的同一个客户端凭证。 所以我建议让开发者在这种情况下使用不同的客户端凭证。

0

说的应用需求进行只读访问和其他客户(网站)一个客户端(移动)需要写为好。这将要求客户端能够决定令牌请求的范围,并因此提供者存储具有不同范围的多个令牌。

然而,它是由你,如果你想扩展现有令牌的使用范围。这意味着你可以为每个应用保留一个范围。这也可以很容易地撤销用户对应用程序的访问。