单个应用程序的多个OAuth2访问令牌?

时间:2013-04-18 07:13:40

标签: oauth oauth-2.0 google-oauth

也许有人可以澄清我,因为我没有发现在文档中明确写出......

我有一个应用程序,它运行在多台计算机上。使用OAuth2,我必须获取访问令牌才能使用Google API。我是否需要在所有主机上使用单一访问令牌,并注意它将在它们之间进行同步(这会增加复杂程度,因为一旦令牌过期 - 必须刷新并再次分发到所有主机主机),或者每个主机可能获得自己的令牌并在本地缓存它?

我不确定第二个选项是否安全(尽管它更容易实现),因为文档写道令牌一旦刷新就会变得无效。可能会发生,当一个主机正在创建其“自己的”令牌时,所有其他令牌(来自其他主机)会自动失效吗?

2 个答案:

答案 0 :(得分:5)

我假设您的应用程序是部署在群集中的Web应用程序,这是正确的吗?

会话状态是否分布在群集上?如果是,请将访问令牌添加到会话中。

理论上,您可以拥有多个访问令牌,但不依赖于此。您可以遇到速率限制,但如果只是偶尔机器获得多个访问令牌,则不是问题。

答案 1 :(得分:2)

由于它是一个应用程序,因此一个访问令牌是首选方法。如果您有多个访问令牌,那么您需要将每台计算机视为单独的应用程序,最终用户需要单独授权每台计算机。

为了避免级联刷新(机器1获得过期响应并进行刷新,然后机器2在机器获取新的访问令牌之前做同样的事情),无论您在哪里存储令牌,都需要一些同步逻辑。数据存储中的简单状态标志(使用现有令牌,获取新令牌)可以帮助进行同步。