【问题标题】:Multiple OAuth2 access tokens for single application?单个应用程序的多个 OAuth2 访问令牌?
【发布时间】:2013-04-11 04:46:48
【问题描述】:
也许有人可以澄清我,因为我发现文档中没有明确写...
我确实有一个应用程序,它在多台机器上运行。使用 OAuth2,我必须获得访问令牌才能使用 Google API。我是否需要在我的所有主机上使用 single 访问令牌并注意它会在它们之间同步(这会增加复杂性级别,因为一旦令牌过期 - 它必须被刷新并再次分发给所有主机主机),或者每个主机都有可能获得自己的令牌并在本地缓存它?
我不确定第二个选项是否安全(尽管它更容易实现),因为文档写道,令牌一旦刷新就会变得无效。会不会发生这样的情况,当一个主机创建其“自己的”令牌时,所有其他令牌(来自其他主机)都会自动失效?
【问题讨论】:
标签:
oauth
oauth-2.0
google-oauth
【解决方案1】:
我假设您的应用程序是部署在集群中的 Web 应用程序,对吗?
是否有会话状态分布在集群中?如果是这样,请将访问令牌添加到会话中。
理论上您可以拥有多个访问令牌,但不要依赖于此。您可能会遇到速率限制,但如果只是偶尔一台机器获得多个访问令牌,这不是问题。
【解决方案2】:
由于是一个应用程序,一个访问令牌是首选方法。如果您有多个访问令牌,则需要将每台机器视为单独的应用程序,最终用户需要分别授权每台机器。
为了避免级联刷新(机器一获得过期响应并进行刷新,然后机器二在机器一获取新访问令牌之前执行相同的操作),您将需要一些同步逻辑,无论您存储令牌。数据存储中的一个简单状态标志(使用现有令牌,获取新令牌)可以帮助同步。