当前位置: 首页 > news >正文

兰州房地产网站建设北京网络营销定制

兰州房地产网站建设,北京网络营销定制,wordpress博客数据库,南京制作网页学校JSON Web Token#xff08;缩写JWT#xff09;是目前最流行的跨域认证解决方案。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后#xff0c;在当前对话#xff08;session#xff09;里面保… JSON Web Token缩写JWT是目前最流行的跨域认证解决方案。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后在当前对话session里面保存相关数据比如用户角色、登录时间等等。 3、服务器向用户返回一个session_id写入用户的 Cookie。 4、用户随后的每一次请求都会通过 Cookie将 sessionid 传回服务器。 5、服务器收到session_id找到前期保存的数据由此得知用户的身份。 这种模式的问题在于扩展性scaling不好。单机当然没有问题如果是服务器集群或者是跨域的服务导向架构就要求 session数据共享每台服务器都能够读取session。 举例来说A网站和B网站是同一家公司的关联服务。现在要求用户只要在其中一个网站登录再访问另一个网站就会自动登录请问怎么实现 一种解决方案是session数据持久化写入数据库或别的持久层。各种服务收到请求后都向持久层请求数据。这种方案的优点是架构清晰缺点是工程量比较大。另外持久层万一挂了就会单点失败。 另一种方案是服务器索性不保存 session数据了所有数据都保存在客户端每次请求都发回服务器。JWT就是这种方案的一个代表。 二、JWT原理 JWT的原理是服务器认证以后生成一个JSON对象发回给用户就像下面这样。 以后用户与服务端通信的时候都要发回这个JSON对象。服务器完全只靠这个对象认定用户身份。为了防止用户篡改数据服务器在生成这个对象的时候会加上签名详见后文。 服务器就不保存任何 session数据了也就是说服务器变成无状态了从而比较容易实现扩展。 三、JWT 的数据结构 实际的JWT大概就像下面这样。 它是一个很长的字符串中间用点.分隔成三个部分。注意JWT内部是没有换行的这里只是为了便于展示将它写成了几行。 JWT的三个部分依次如下。 Header头部Payload负载Signature签名 写成一行就是下面的样子。 3.1 Header Header 部分是一个JSON对象描述JWT的元数据通常是下面的样子。 上面代码中a1g属性表示签名的算法algorithm默认是HMACSHA256 写成HS256typ属性表示这个令牌token的类型typeJWT令牌统一写为JWT。 最后将上面的JSON对象使用Base64URL算法详见后文转成字符串。 3.2 Payload Payload 部分也是一个JSON对象用来存放实际需要传递的数据。JWT规定了7个官方字段供选用。 ississuer签发人expexpiration time过期时间subsubject主题audaudience受众nbfNot Before生效时间iatIssued At签发时间jtiJWTID编号 除了官方字段你还可以在这个部分定义私有字段下面就是一个例子。 注意JWT默认是不加密的任何人都可以读到所以不要把秘密信息放在这个部分。 这个JSON对象也要使用Base64URL算法转成字符串。 3.3 Signature Signature部分是对前两部分的签名防止数据篡改。 首先需要指定一个密钥secret。这个密钥只有服务器才知道不能泄露给用户。然后使用Header 里面指定的签名算法默认是HMACSHA256按照下面的公式产生签名。 算出签名以后把Header、Payload、Signature 三个部分拼成一个字符串每个部分之间用“点”分隔就可以返回给用户。 在JWT中消息体是透明的使用签名可以保证消息不被篡改。但不能实现数据加密功能。 3.4 Base64URL 前面提到Header和Payload 串型化的算法是Base64URL。这个算法跟Base64算法基本类似但有一些小的不同。 JWT作为一个令牌token有些场合可能会放到URL比如api.example.com/tokenxxx。Base64有三个字符、/和在URL里面有特殊含义所以要被替换掉被省略、替换成一/替换成_。这就是Base64URL 算法。 四、JWT的使用方式 客户端收到服务器返回的JWT可以储存在Cookie里面也可以储存在localStorage。 此后客户端每次与服务器通信都要带上这个JWT。你可以把它放在Cookie里面自动发送但是这样不能跨域 所以更好的做法是放在HTTP请求的头信息Authorization 字段里面。 另一种做法是跨域的时候JWT就放在POST请求的数据体里面。 五、JWT的几个特点 1JWT默认是不加密但也是可以加密的。生成原始Token以后可以用密钥再加密一次。 2JWT不加密的情况下不能将秘密数据写入JWT。 3JWT不仅可以用于认证也可以用于交换信息。有效使用JWT可以降低服务器查询数据库的次数。 4JWT的最大缺点是由于服务器不保存session状态因此无法在使用过程中废止某个token或者更改token的权限。也就是说一旦JWT签发了在到期之前就会始终有效除非服务器部署额外的逻辑。 5JWT本身包含了认证信息一旦泄露任何人都可以获得该令牌的所有权限。为了减少盗用JWT的有效期应该设置得比较短。对于一些比较重要的权限使用时应该再次对用户进行认证。 6为了减少盗用JWT 不应该使用 HTTP 协议明码传输要使用 HTTPS 协议传输。 六、JWT 的解决方案 https://jwt.io/ 七、在 Node.js 中使用 JWT 推荐https://github.com/auth0/node-jsonwebtoken。 参考链接 https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html https://jwt.io/ https://tools.ietf.org/html/rfc7519 https://www.cnkirito.moe/jwt-learn-3/
http://www.zqtcl.cn/news/62163/

相关文章:

  • 做网站都需要学什么语言前端培训找不到工作的多吗
  • 手机管理wordpress站wordpress设置使用旧版编辑器
  • 网站建设基本功能阿里巴巴组织调整
  • 织梦做的网站被黑了打开百度网站建设
  • 做的好的网站营销微信公众号wordpress编辑优化
  • 做一个模板网站多少钱怎么注册软件平台
  • 深圳网站建设哪家专业无锡朝阳网站推广
  • 网站开发网站设计的标准wap浏览器电脑版
  • 绍兴公司网站建设wordpress如何加入点赞
  • 人才网站建设策划书青岛做网站公
  • 简答题网站建设步骤企业营销策略
  • 诏安县建设局网站手机网页游戏开发
  • 建设部网站城乡规划资质标准最近三天的国内新闻
  • 单页网站案例分析自学网站官网
  • 怎么建自己的手机网站阳江问政平台投诉平台
  • 去了哪找网站建设公司外网资源
  • 旅游网站开发内容北京私人做网站
  • 现在还有企业做网站吗荆门市网站建设
  • 江阴网站的建设wordpress 文章相册
  • 好素材网站英文网站设计方案
  • 潍坊网络建站模板网站开发实践教程
  • 网站后台有安全狗仿励志一生lz13网站整站源码
  • 网站app免费制作软件江苏品牌网站建设
  • cms做企业网站6漳州北京网站建设公司
  • 软件网站开发市场前景网站优化宝
  • 门户网站是啥如何让广域网访问利用公网ip和本地服务器建设的网站
  • 做的比较好看的国内网站泰安市大众人才网
  • 小型购物网站开发WordPress怎么上传头像
  • 阿里云主机网站开发甘肃兰州天气预报15天
  • 企业的网站如何建立的网站 创意 方案