
[英]Why should I store Refresh Token for JWT in the server database? Would storing access token instead be better?
[英]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.