简介

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. c# 分布式系统开发

    开篇吹牛,吹大牛了各位. 接连几篇博文,已经将了我们系统常用的东西,主要针对服务端,非桌面系统. 聊了这么久了,最后将这所有内容打包,完成一个系统.可能称为组件才合适,因为我没有提供启动程序. 每一个 ...

  2. Qt基于model/view数据库编程3

    QSqlQueryModel和QSqlQuery类: 工程开发过程中将这两个类合起来使用,用QSqlQueryModel查询展示数据库中的数据,用QSqlQuery类执行sql语言,实现对数据库的操作 ...

  3. LeetCode-环形链表II

    LeetCode-环形链表II 为找到入口点可以用以下方法 使用快慢指针法直到两个指针相遇 头节点处创建一个新的指针,并且向前移动,两个指针相遇处创建一个新的指针,并且向前移动,直到两个指针相遇为入口 ...

  4. Docker 运行MangoDB

    1.Docker运行MangoDB镜像 #创建挂载目录 cd /opt/docker_cfg mkdir -vp mongo/db #获取mongodb镜像 [root@localhost xiaog ...

  5. ubuntu以root进入图形化界面

    sudo nautilus 可以进行一些文件夹移动操作,不会出现权限的问题

  6. Drupal 网站漏洞修复以及网站安全防护加固方法

    drupal是目前网站系统使用较多一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置,drupal的代码开发较为严谨,安全性较高,但是再安全的网站系统,也会出现网站漏洞,dru ...

  7. 141. 环形链表 LeetCode报错:runtime error: member access within null pointer of type 'struct ListNode'

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  8. ESP32 LyraT音频开发板试玩(一):搭建开发环境

    我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...

  9. nodejs环境变量配置

    步骤 创建文件夹:安装包 配置环境变量: export NODE_HOME=/root/安装包/node-v7.6.0-linux-x64 export PATH=$NODE_HOME/bin:$PA ...

  10. WPF DateTimePicker 和 TimeSpanPicker 控件发布

    原文:WPF DateTimePicker 和 TimeSpanPicker 控件发布 根据http://datetimepickerwpf.codeplex.com/ 这个项目重构了一下代码设计了我 ...