为啥我应该使用 JWT 而不是简单的散列令牌
Posted
技术标签:
【中文标题】为啥我应该使用 JWT 而不是简单的散列令牌【英文标题】:Why should i use JWT not simple hashed token为什么我应该使用 JWT 而不是简单的散列令牌 【发布时间】:2017-06-11 10:20:59 【问题描述】:由于不应共享敏感信息,JWT 有什么需求?
我可以创建一个令牌列,将其存储在数据库中并调用它,以交叉验证令牌并获取用户详细信息。
自定义生成的令牌可以使用密钥进行哈希处理,因此不会被解码。既然这么简单,为什么要使用复杂的 JWT 类型,它有信息。
【问题讨论】:
【参考方案1】:由于不应共享敏感信息,JWT 有什么需求?
在大多数情况下,不能将具有私有 ID、到期日期或颁发者的主题视为敏感主题。并且令牌必须在双方之间保密,因为拥有是身份验证的证明。
无论如何,JWT 内容都可以使用 JWE 进行加密。
自定义生成的令牌可以使用密钥进行哈希处理,因此不会被解码。既然这么简单,为什么要使用复杂的 JWT 类型,它有信息。
与不透明的令牌系统相比,JWT 有一些优势:
令牌不需要服务器存储 令牌有过期日期 在各方之间安全地共享信息。还有缺点……
没有撤销机制。不建议设置黑名单,因为它破坏了 JWT 无状态 增加令牌大小【讨论】:
以上是关于为啥我应该使用 JWT 而不是简单的散列令牌的主要内容,如果未能解决你的问题,请参考以下文章
为啥要使用环境变量对 JSON Web 令牌 (JWT) 进行签名?
为啥关键字参数必须作为带有符号键的哈希传递,而不是 Ruby 中的字符串键?
如何在 Spring security 和 JwtBuilder 中处理 JWT 过期(我应该使用 cookie max age)