一、概述

1、什么是无状态?

简单讲,服务里面一定要存一个session那就是有状态,不需要存就是无状态

2、服务架构演进

单体架构(有状态)

缺陷:Session在服务器中,如果服务器有多个,由于服务器轮询,会造成频繁跳转登录;服务器开销大

分布式架构:Redis集中管理session(有状态)

缺陷:服务端要一直维持session状态,redis挂掉了,所有用户要重新登录;服务器开销大

微服务架构:JWT(无状态)

优势:登陆后返回jwt,以后每次用户会携带jwt发送请求,服务端不需要再维持session状态

二、JWT基础知识

1、什么是JWT

通过json的形式作为web应用中的令牌,用于各方之间安全的信息传输。(json web token)

优势

2、JWT结构

(1)结构

标头(Header).有效载荷(Payload).签名(Signature)

Header

{

“alg”: “HS256”, // 签名算法

“typ”: “JWT” // 令牌类型

}

// 对上面做Base64编码

base64UrlEncode(header)

Payload(有效负荷中不要放敏感信息,因为Base64编码是可以解码的)

{

“sub”: “1234567890”,

“name”: “tom”,

“admin”: true

}

// 对上面做Base64编码

base64UrlEncode(payload)

Signature(防止Header和Payload被篡改)

HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), “secret”);

(2)解密

(3)验证

将传入的token的第1、2部分加上secret进行加密,如果跟第3部分相同,则验证通过。

HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), “secret”);

3、JWT认证流程

三、JWT简单使用

1、引入依赖

com.auth0

java-jwt

3.4.0

2、生成token

Calendar instance = Calendar.getInstance();

instance.add(Calendar.DATE, 6);

// 生成令牌

String token = JWT.create()

.withClaim("username", "张三") // 自定义用户名

.withExpiresAt(instance.getTime()) // 设置过期时间

.sign(Algorithm.HMAC256("securityJWT")); // 设置签名

// 输出令牌

System.out.println(token);

生成的token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1OTgzNDM5NDAsInVzZXJuYW1lIjoi5byg5LiJIn0.2mfqA8AMn9rK-OpKDYEbOO8hWb5DSdVOmL0a_mxq5CE

3、根据令牌和签名解析数据

// 创建验证对象

JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("securityJWT")).build();

DecodedJWT decodedJWT = jwtVerifier.verify(“eyJ0eXAiOiJKV1Q...jkfSgrqD7BtZg7GeA");

System.out.println("用户名:" + decodedJWT.getClaim("username").asString());

System.out.println("过期时间:" + decodedJWT.getExpiresAt());

四、单点登录

1、什么是单点登录?

我们在某宝中,可以看到,里面有很多别的应用,而我们想要用,直接点就行了,并不需要再次登录,这就是单点登录。

2、单点登陆的原理

多个应用间是通过token进行传输,当你登录某宝之后,会产生一个token,在你后续访问过程中都会携带这个token,而当你点击其他应用时,也会把token传过去,应用会对token进行解密验证,验证成功,即可访问。

java框架 token_Java安全框架(三):JWT(Json Web Token)相关推荐

  1. JWT (Json Web Token)教程

    JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头).payload(载体).signature(签名). 头 JWT第一部分是heade ...

  2. 什么是 JWT -- JSON WEB TOKEN

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  3. JWT(JSON Web Token)简介及实现

    JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...

  4. JWT(JSON web token)

    1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contain ...

  5. 关于JWT(Json Web Token)的思考及使用心得

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...

  6. jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...

  7. 关于JWT(Json Web Token)的思考及使用心得 1

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(https://tools.ietf.org/html/r...,一般用来做轻量级的API鉴权.由于许 ...

  8. sau交流学习社区-songEagle开发系列:Vue + Vuex + Koa 中使用JWT(JSON Web Token)认证

    一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...

  9. 登录令牌JWT — JSON WEB TOKEN

    登录令牌JWT - JSON WEB TOKEN 关于作者 作者介绍

  10. 在吗?认识一下JWT(JSON Web Token) ?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀  地址:my.oschina.net/u/4062 ...

最新文章

  1. 干掉visio,这个画图神器真的绝了!!!
  2. [LUOGU] P2330 [SCOI2005]繁忙的都市
  3. 如何用虚幻引擎4和C++开发游戏?斯坦福相关课程上线
  4. python计算每月工资-[Python] 2018新税法下工资计算
  5. matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
  6. uos20专业版是linux哪个版本,WPS Office 2019 for Linux 专业版已与统一操作系统 UOS 完成适配...
  7. linux下的进程信号,信号注册、处理方式、注销,信号阻塞及volatile代码优化
  8. 力学,软体和刚体碰撞响应 以及 层次KDOP_OBB包围盒技术
  9. JavaScript学习 第四课(四)
  10. 表格细线边款(HTML、CSS)
  11. [转]unresolved external symbol _*
  12. 【北京迅为】i.MX6ULL终结者硬件资源说明
  13. web中常见的敏感信息
  14. Linux下 ifconfig 命令的使用(Linux命令)
  15. C++中相对路径与绝对路径以及斜杠与反斜杠的区别
  16. Wormhole资产跨链项目代码解析
  17. 基于高通410c开发板,开发android端家庭控制中心APP(1)
  18. Ext4 vs XFS——你应该使用哪个文件系统
  19. python 调用百度地图api 实现批量经纬度转换为实际省市地点(api调用,json解析,mysql读取与写入)
  20. 约瑟夫问题与魔术(十)——魔术《完全控制》

热门文章

  1. 矩阵分析之 实矩阵分解(2)LU,PLU分解
  2. 虾米自动签到 php,云签到之虾米音乐自动签到
  3. 宏观经济学 索洛模型
  4. 中国首个AI考级来了!共分10级,北大出题,工信部认证
  5. SPOJ 7258 Lexicographical Substring Search(后缀自动机)
  6. 联想手机背水一战 携手镇魂朱一龙 能否龙跃鱼门掀起5g新浪潮!
  7. RabbitMQ安装和管理界面设置
  8. java实现快递物流查询(阿里云快递物流)
  9. 22 个出口节点对 Tor 网络发动中间人攻击
  10. 使用Arduino和Android制作一款非接触式智能红外测温仪