java框架 token_Java安全框架(三):JWT(Json Web Token)
一、概述
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)相关推荐
- JWT (Json Web Token)教程
JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头).payload(载体).signature(签名). 头 JWT第一部分是heade ...
- 什么是 JWT -- JSON WEB TOKEN
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- JWT(JSON Web Token)简介及实现
JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...
- JWT(JSON web token)
1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contain ...
- 关于JWT(Json Web Token)的思考及使用心得
什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...
- jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权
这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...
- 关于JWT(Json Web Token)的思考及使用心得 1
什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(https://tools.ietf.org/html/r...,一般用来做轻量级的API鉴权.由于许 ...
- sau交流学习社区-songEagle开发系列:Vue + Vuex + Koa 中使用JWT(JSON Web Token)认证
一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...
- 登录令牌JWT — JSON WEB TOKEN
登录令牌JWT - JSON WEB TOKEN 关于作者 作者介绍
- 在吗?认识一下JWT(JSON Web Token) ?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀 地址:my.oschina.net/u/4062 ...
最新文章
- 干掉visio,这个画图神器真的绝了!!!
- [LUOGU] P2330 [SCOI2005]繁忙的都市
- 如何用虚幻引擎4和C++开发游戏?斯坦福相关课程上线
- python计算每月工资-[Python] 2018新税法下工资计算
- matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
- uos20专业版是linux哪个版本,WPS Office 2019 for Linux 专业版已与统一操作系统 UOS 完成适配...
- linux下的进程信号,信号注册、处理方式、注销,信号阻塞及volatile代码优化
- 力学,软体和刚体碰撞响应 以及 层次KDOP_OBB包围盒技术
- JavaScript学习 第四课(四)
- 表格细线边款(HTML、CSS)
- [转]unresolved external symbol _*
- 【北京迅为】i.MX6ULL终结者硬件资源说明
- web中常见的敏感信息
- Linux下 ifconfig 命令的使用(Linux命令)
- C++中相对路径与绝对路径以及斜杠与反斜杠的区别
- Wormhole资产跨链项目代码解析
- 基于高通410c开发板,开发android端家庭控制中心APP(1)
- Ext4 vs XFS——你应该使用哪个文件系统
- python 调用百度地图api 实现批量经纬度转换为实际省市地点(api调用,json解析,mysql读取与写入)
- 约瑟夫问题与魔术(十)——魔术《完全控制》