5

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

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

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

4

2 回答 2

5

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

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

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

于 2013-04-19T03:40:11.913 回答
2

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

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

于 2013-04-18T16:36:08.903 回答