在JWT中存储什么?

时间:2016-08-11 13:17:12

标签: session cookies jwt

你们如何在多个设备上处理同一个用户?除了更改它的设备之外,诸如{admin: true}之类的数据会变得陈旧吗?

这甚至应该在JWT中吗?如果没有,我们只使用用户ID,那就像基于cookie的会话一样,因为我们将状态存储在服务器上?

1 个答案:

答案 0 :(得分:9)

JWT RFC stablish thre类索赔:

  • 已注册的声明,例如fa fa-sticky-notesubissexp

  • 公开声明,其公开名称或名称registered by IANA包含的值应该是唯一的nbfemailaddress 。请参阅full list

  • 在您自己的上下文中使用的
  • 私密声明和值可能会发生冲突

这些索赔均不是强制性的

JWT是自包含的,应避免使用提供必要数据的服务器会话来执行身份验证(不需要服务器存储和数据库访问)。因此,phone_number信息可以包含在JWT中。

使用多个设备时,在到期前撤消令牌有多种原因,例如当用户更改管理员删除的密码,权限或帐户时。在这种情况下,您需要一个黑名单或替代机制来拒绝令牌

黑名单可以包含令牌唯一ID role,或者只是在更新用户的关键数据(密码,权限等)和{{}之后设置条目(jti - sub) 1}}。 iss(不再发送未过期的令牌)时,可以放弃该条目。

注册索赔

以下声明名称已在Section 10.1.

建立的IANA“JSON网络令牌声明”注册表中注册
  • currentTime - maxExpiryTime < last iss(发行人):确定发行JWT的委托人。
  • currentTime - maxExpiryTime > last_modified(主题):确定作为JWT主题的主体。必须是唯一的
  • iss(观众):识别JWT的目标收件人(字符串数组/ uri)
  • sub(到期时间):标识到期时间(UTC Unix),之后您必须不再接受此令牌。应该是在发布时间之后。
  • aud(不在之前):标识不得接受JWT的UTC Unix时间
  • exp(发布于):标识发布JWT的UTC Unix时间
  • nbf(JWT ID):为JWT提供唯一标识符。

实施例

iat

请参阅此处的备选方案https://stackoverflow.com/a/37520125/6371459