简介

JWT是一种用于HTTP交互双方之间传递安全信息的简洁的、安全的表述性声明规范。JWT作为一个开发的标准,它定义了一种简洁的,自包含的方法用于通信双发之间以JSON形式安全传递。且因为数字证书的存在,这些信息是可信的,它使用公用的HMAC算法进行签名校验。它的简洁在于可以再HTTP请求时包含再Header中发送,因为数据量小所以不会影响传输效率,并且它的内容承载了用户自定义的一些必要数据且不能被篡改。

JWT的结构

JWT包含了使用“.”分隔的三部分: Header 头部 Payload 负载 Signature 签名

在Header中通常包含了两部分:token类型和采用的加密算法。{ "alg": "HS256", "typ": "JWT"}

Payload包含了Claim,它是一些自定义的实体信息。

Signature签名使用HMACSHA256算法,创建方式如下: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) 签名用于验证消息的发送者以及消息是没有经过篡改的。完整的JWT格式如下:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJMb2dpbkluZm8iOnsiVXNlcklkIjo0MywiVXNlclR5cGUiOjAsIkFwcElkIjoxMDMsIkxvZ2luTmFtZSI6IjE1MDE5MzY5MTUwIn0sImV4cCI6MTUyNjY0NDE1Mi4wfQ.jRN7WsEnqhmjJn6KaQzAL4lr3ZkE-WwmLBD_iXqIAWc

JWT部署

客户端请求授权服务器获取Token后,使用该Token去访问实现了JWT认证的应用服务器。Token中用户可以保存一些自定义信息,应用服务器用密钥去解析Token后获取到请求用户的信息了,很方便的解决了跨域授权的问题,因为跨域无法拿不到Cookie就无法认证,用JWT可以很好的解决此问题。具体实现如下

总结

优点:

1、完全分布式,跨平台,应用系统均可采用不同的语言来开发;

2. 应用系统系统A和系统B,可实现服务端无状态方式。

缺点:

1、若攻击者拿到Token就可以访问服务器直到过期,需要设置适当的过期时间和其他安全方式保证Token的安全性。

本文摘自智车芯官网:http://www.thinkobd.cn/

基于JWT的无状态分布式授权【本文摘自智车芯官网】的更多相关文章

  1. 在Asp.Net中使用Redis【本文摘自智车芯官网】

    Redis安装 在安装之前需要获取Redis安装包.在这里我们就不详细介绍安装包的获取了.这里Redis-x64-3.2.100.zip安装包为例通过dos命令取安装.通过dos命令找到安装目录. 在 ...

  2. UITableView性能优化【本文摘自智车芯官网】

    UITableView是个表格视图,可以在表格行空间中添加多个子控件,UITableView继承了UIScrollView,默认状态下可以堆单元格进行滚动,所有的UITableViewControll ...

  3. MQTT在平台中的应用【本文摘自智车芯官网】

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联 ...

  4. Xcode 自动打包之旅【本文摘自智车芯官网】

    由于公司项目很多,作为iOS端的开发工程师,在打包和上传App Store过程中超级费时,而且往往会有频繁更改需求重新打包.上传的情况.这些过程让我不胜其烦.之前有听说过自动打包,一直没有时间尝试,此 ...

  5. 开箱即用 - jwt 无状态分布式授权

    基于JWT(Json Web Token)的授权方式 JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态.分布式的Web应用授权: 从客户端请求服务器获取token, 用该token 去访 ...

  6. jwt 无状态分布式授权

    基于JWT(Json Web Token)的授权方式 JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态.分布式的Web应用授权: 从客户端请求服务器获取token, 用该token 去访 ...

  7. shiro jwt 构建无状态分布式鉴权体系

    一:JWT 1.令牌构造 JWT(json web token)是可在网络上传输的用于声明某种主张的令牌(token),以JSON 对象为载体的轻量级开放标准(RFC 7519). 一个JWT令牌的定 ...

  8. Spring Boot Security 整合 JWT 实现 无状态的分布式API接口

    简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念.本文重点讲解Spring Boo ...

  9. beego应用做纯API后端如何使用jwt实现无状态权限验证

    jwt是什么,可以百度下其它文章,我原来看到一个讲的详细的,现在找不到了.先简单介绍下我个人的理解,就是一个token,只不过通过加密解密的手段,能让这一串字符带有一些简单的信息.这样解密jwt后不用 ...

随机推荐

  1. jquery 层级选择器

    关于层级选择器. $("parent > child") 选择所有指定“parent”元素中指定的“child”的直接子项元素. parent :任何有效的选择器. chil ...

  2. JS基础——数组API之数组操作(filter、map、some、every、sort)

    var arr = [1,2,3,4];   forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...

  3. [异常笔记]required a bean of type 'org.quartz.JobExecutionContext' that could not be found

    *************************** APPLICATION FAILED TO START *************************** Description: Par ...

  4. kali下添加用户和权限分配

    1.添加用户 useradd -m test #-m的意思是创建用户的主目录 2.为用户test设置密码. passwd test 3.为添加的用户赋予权限(-a 添加 :-G 群组) 如果没有这一步 ...

  5. 【BGP的基本配置】

    BGP的基本配置 一:根据项目需求搭建好拓扑图如下 二:配置 1:首先进行理论分析:RT1和RT2,3分别属于不同的AS;在RT1和RT2之间建立EBGP关系,在确保RT3可以学到RT1的8.1.1. ...

  6. PHPPCRE正则解析

    一.前言 前面的博客里,有对字符集的解析.这里就不是字符集的事儿了,在PHP中很多函数的处理默认是unicode中的UTF-8编码格式.那么废话不多说,直接开始正题. 二.PHP函数mb_split解 ...

  7. JDK8新垃圾回收机制--G1垃圾回收机制

    G1全称是Garbage First Garbage Collector,使用G1的目的是简化性能优化的复杂性.例如,G1的主要输入参数是初始化和最大Java堆大小.最大GC中断时间. G1 GC由Y ...

  8. Linux 内核之api_man 手册安装

    开发环境:Ubuntu18.04,虚拟机virtual box 1.安装XML格式转换 sudo apt  install xmlto 2.在内核目录执行 make mandocs  大概持续了半小时 ...

  9. aioysql(异步操作MySQL)-python

    python异步IO初探 探索异步IO执之前,先说说IO的种类 阻塞IO最简单,即读写数据时,需要等待操作完成,才能继续执行.进阶的做法就是用多线程来处理需要IO的部分,缺点是开销会有些大. 非阻塞I ...

  10. nginx配置SSL证书/强制跳转与非强制跳转

    支持强制跳转HTTPS server { listen 80; server_name www.test.com; rewrite ^(.*)$ https://${server_name}$1 pe ...