我应该在Google oauth2中为多个客户端分别存储访问和刷新令牌吗?

时间:2019-09-20 15:52:07

标签: oauth-2.0 openid-connect google-oauth2 google-openid

我正在为我的应用程序构建google oauth2。现在,我将从Web客户端开始,并在将来规划移动客户端。

在后端存储刷新和访问令牌时,我将令牌存储为 refresh_token_web access_token_web ,这样很明显这些令牌是针对Web客户端的。基本上,每种类型的客户端都独立存储令牌。

据我了解,令牌是为应用程序而不是特定客户端提供的。如果用户使用移动客户端执行oauth2, refresh_token_web 仍然可以工作还是超出范围?

我通过独立存储令牌来做正确的事情吗?有人遇到这种方法的问题吗?

1 个答案:

答案 0 :(得分:0)

据我了解,令牌是为应用程序而不是特定客户提供的

首先,您需要区分OAuth场景中涉及的角色。根据规范, client 是需要令牌访问受保护资源的应用程序。

然后有一个拥有真正资源的资源所有者。在大多数情况下,这将是像您和我一样的人类用户。但是有时会有OAuth授予,允许为客户端发行令牌。例如Client Credentials Grant向客户端发行令牌。

因此,要回答您的问题,首先需要区分正在使用的补助金。如果您的应用程序仅使用发布给它的令牌,那么您可以简单地在后端使用该应用程序的令牌集。但是,如果涉及最终用户,则需要区分每个用户的令牌。

通常,您的用户应具有唯一的标识符(例如:电子邮件就是这样的标识符)。因此,您可以创建两个条目来针对唯一的外键(即用户ID)分别存储两个应用程序(Web和移动设备)的刷新令牌。还要通读相关的答案,该答案讨论了here的相似主题。