繁体   English   中英

为什么需要将刷新令牌保存在数据库中?

[英]Why is it needed to save the refresh token in the database?

我试图了解此 access_token、refresh_token 功能。 这就是我的理解:

- 登录:

创建访问令牌;

创建 refresh_token,发送到数据库;

SENDS refresh_token + access_token 给客户端;

  • access_token 已过期: API 自动创建一个新的 access_token,使用 refresh_token;

  • refresh_token 已过期: API 拒绝所有请求,强制客户端再次登录。

而且我听说您需要将 refresh_token 保存在数据库的“会话”表或类似的表中。 但我不明白为什么,因为客户端将/可能会在所有请求上发送 refresh_token。 使其无法保存到数据库。

不知道是不是我写错了,希望大家多多指教!

在您的示例中有什么地方有点尴尬(或不清楚)——哪个系统创建访问和刷新令牌,并将它们发送给客户?

根据描述,我会得出结论,这是身份提供者——客户端对自己进行身份验证并因此获得了这些令牌。

现在,当客户端调用 API(在资源提供者上)时,他们必须在每个请求中包含访问令牌。 资源提供者将获取访问令牌并对其进行验证。 如果访问令牌无效,则 API 只需返回“访问被拒绝”。

客户端必须使用刷新令牌从身份提供者那里获取新的访问令牌,并在资源提供者上重复调用 API。

这将是流的典型用法。

另一个常见的用例是允许后端系统代表客户端进行 api 调用——在这些情况下,后端系统同时具有访问令牌和刷新令牌; 因此即使客户端不在身边,它也可以保持登录状态 state。

您的示例可能是某种混合解决方案 - 客户和后端都对 IDP 进行了一些调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM