JWT使用一些注意事项

栏目: 服务器 · 发布时间: 6年前

内容简介:最近在折腾多端登录,面临的场景有 hybirdApp 有小程序 还有 web,目前采用的是通过定一个公共参数 token 来处理数据一致性保持会话一致性。通过以上可以看到我们在使用 JWT 时需要创建一个数据库存储 token ;并生成 token 的jti(JWT ID。针对当前token的唯一标识)

最近在折腾多端登录,面临的场景有 hybirdApp 有小程序 还有 web,目前采用的是通过定一个公共参数 token 来处理数据一致性保持会话一致性。

研究 JWT 的原因

  1. 目的达到了,但是 token 未做验证机制,无法确定用户情况,只要有人拿到这个 token 就可以长期使用。
  2. 目前遇到了因为 session 的一个错误使用将内容清空了的情况,导致 APP 端重复要求登录,登录后仍然要求登录的现状,虽最终将有问题的 session 清空操作给屏蔽掉,但并没有从根本上解决问题
  3. JWT就是一个字符串,经过加密处理与校验处理的字符串,由三个部分组成。基于token的身份验证可以替代传统的cookie+session身份验证方法。三个部分以 . 分割:header.payload.signature 参见php JWT在web端的使用方法

JWT 的特点

  1. 无 session 无 cookies。 可以自称体系,不局限于一个钟新服务器
  2. 为了迁移到微服务架构,由于服务分拆之后,单一的登录入口点消失了,采用Token是必然之选。
  3. 为了伸缩性考虑,采用Cookie + Session机制,必然面临着应用状态的问题,而且必然牵涉到session的复制。采用Token,天然避免这一点。这里并非是指完全无Session化,但起码可以降至最少。
  4. 为了移动端考虑,Token更适合移动端,比Cookie更灵活了。
  5. 为了安全性考虑,Token机制【仅验证request header时】天然对CSRF免疫。

JWT 在 PHP 中的应用

目前有多个 php 的类库或者扩展在使用中达到了 jwt.io 的要求。我这里比较推荐的有两个非扩展类库 firebase/php-jwtlcobucci/jwt 第二个比第一个功能更全一些

JWT使用一些注意事项

JWT 在使用中的注意事项

使用了 JWT 我们一般都会考虑两点:
1. 签名是否正确?
2. Token是否到期?
这两块可以通过校验几个字段来处理
1. 建立 token 吊销机制,将 token 写入数据库,
2. 无效 token 因未入数据库,所以确信传入的 token 是有效的。
3. 对有效的 token 进行签名验证,获取到 token 后重新生成签名进行校验 token 的签名部分( C 位的值)是否一致。
4. 确认是否 token 超时可以通过 exp(expire 指定token的生命周期。unix时间戳格式) 和 nbf(not before。如果当前时间在nbf里的时间之前,则Token不被接受。unix时间戳格式。) 声明,获取到 token 后,对时间进行判断。
5. 为了防止replay attack,可加上 iss(issuer 请求实体,可以是发起请求的用户的信息,也可是jwt的签发者。),jti (JWT ID。针对当前token的唯一标识) 和 iat(issued at。 token创建时间,unix时间戳格式) 声明,然后获取到 token 后,对声明信息进行匹配。

通过以上可以看到我们在使用 JWT 时需要创建一个数据库存储 token ;并生成 token 的jti(JWT ID。针对当前token的唯一标识)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis设计与实现

Redis设计与实现

黄健宏 / 机械工业出版社 / 2014-6 / 79.00

【官方网站】 本书的官方网站 www.RedisBook.com 提供了书本试读、相关源码下载和勘误回报等服务,欢迎读者浏览和使用。 【编辑推荐】 系统而全面地描述了 Redis 内部运行机制 图示丰富,描述清晰,并给出大量参考信息,是NoSQL数据库开发人员案头必备 包括大部分Redis单机特征,以及所有多机特性 【读者评价】 这本书描述的知识点很丰富,......一起来看看 《Redis设计与实现》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具