JWT 刷新令牌的必须声明是什么?它可以与访问令牌相同吗具有更长的 exp?

问题描述

我正在玩弄并使用 JWT 创建自定义访问令牌系统。我已经创建了一个用于签署和验证 JWT 访问令牌的系统。

但是,我发现很难获得有关刷新令牌应包含哪些声明的信息。

我是否应该创建与访问令牌相同的刷新令牌 - 具有更长的到期时间,以便验证访问令牌的相同功能可用于验证刷新令牌?

解决方法

刷新令牌通常是一个不透明的值,仅供客户端用于刷新访问令牌。流程如下:

  • Web 或移动客户端实施 OpenID Connect 以对用户进行身份验证并获取令牌 - 在某些情况下会提示用户同意

  • 授权服务器 (AS) 发布令牌并将此“委托”的详细信息存储在数据库中 - 令牌是指向此状态的指针

  • 客户端向 API 发送访问令牌,直到收到 401 过期响应

  • 客户端然后尝试通过将刷新令牌发送到授权服务器来刷新访问令牌,授权服务器然后从存储的状态中查找声明详细信息

我会确保您正确履行这些职责 - 特别是避免构建自己的 AS 并使用专家提供的免费 AS,例如 Curity Community Edition。许多安全解决方案将更容易开发。