问题描述
我正在玩弄并使用 JWT 创建自定义访问令牌系统。我已经创建了一个用于签署和验证 JWT 访问令牌的系统。
但是,我发现很难获得有关刷新令牌应包含哪些声明的信息。
我是否应该创建与访问令牌相同的刷新令牌 - 具有更长的到期时间,以便验证访问令牌的相同功能可用于验证刷新令牌?
解决方法
刷新令牌通常是一个不透明的值,仅供客户端用于刷新访问令牌。流程如下:
-
Web 或移动客户端实施 OpenID Connect 以对用户进行身份验证并获取令牌 - 在某些情况下会提示用户同意
-
授权服务器 (AS) 发布令牌并将此“委托”的详细信息存储在数据库中 - 令牌是指向此状态的指针
-
客户端向 API 发送访问令牌,直到收到 401 过期响应
-
客户端然后尝试通过将刷新令牌发送到授权服务器来刷新访问令牌,授权服务器然后从存储的状态中查找声明详细信息
我会确保您正确履行这些职责 - 特别是避免构建自己的 AS 并使用专家提供的免费 AS,例如 Curity Community Edition。许多安全解决方案将更容易开发。