Rust : Json Web Token
JWT的原理
见相关资料:
https://www.jianshu.com/p/576dbf44b2ae //写得很清楚
https://zhuanlan.zhihu.com/p/27370773
https://zhuanlan.zhihu.com/p/43094841
原理:
三部分:头部(header)载荷(payload)签证(sign)
其中载荷中:
标准中注册的声明:
iss:jwt签发者
sub:jwt所面向的用户
aud:接收jwt的一方
exp:jwt的过期时间,这个过期时间必须大于签发时间
nbf:定义在什么时间之前,该token都是不可用的
iat:jwt的签发时间
jti:jwt的唯一身份标识,避免重复
JWT的相关特点
优点
不需要储存在服务器的session中,更容易扩展服务器由于用户信息可以放入token中,所以可以少了一次数据库 / 缓存的查询操作,有更好的性能不需要预防CSRF的攻击
不足
token一经泄露或者被盗取,将会暴露该用户
建议
token的过期时间,不宜过长
非常重要的操作,需要手机验证码,支付密码等二次验证作为保险
尽量使用 https
https://zhuanlan.zhihu.com/p/43094841
// Header
{"alg": "HS256","typ": "JWT"
}// Payload负载: iss(签发者),exp(过期时间戳), sub(面向的用户), aud(接收方), iat(签发时间)
{"iss": "a.com","exp": "1d","http://a.com": true,"company": "A","awesome": true
}// Signature
HS256(Base64(Header) + "." + Base64(Payload), secretKey)// JWT
JWT = Base64(Header) + "." + Base64(Payload) + "." + $Signature
Rust中JWT的库见https://github.com/Keats/jsonwebtoken。
具体Rust库相关示例代码如下:
use std::{thread, time};
extern crate jsonwebtoken as jwt;
#[macro_use]
extern crate serde_derive;use jwt::errors::ErrorKind;
use jwt::{decode, encode, Algorithm, Header, Validation};#[derive(Debug, Serialize, Deserialize)]
struct Claims {sub: String,company: String,exp: usize,
}fn main() {let sleep_seconds = time::Duration::from_secs(1000);let my_claims = Claims {sub: "b@b.com".to_owned(),company: "ACME".to_owned(),exp: 10000000000,};let key = "secret";let mut header = Header::default();header.kid = Some("signing_key".to_owned());header.alg = Algorithm::HS512;let token = match encode(&header, &my_claims, key.as_ref()) {Ok(t) => t,Err(_) => panic!(), // in practice you would return the error};println!("token:{:?}", token);let token_data =match decode::<Claims>(&token, key.as_ref(), &Validation::new(Algorithm::HS512)) {Ok(c) => c,Err(err) => match *err.kind() {ErrorKind::InvalidToken => panic!(), // Example on how to handle a specific error_ => panic!(),},};println!("claims:{:?}", token_data.claims);println!("header:{:?}", token_data.header);println!("jwt, i am learning it!");thread::sleep(sleep_seconds);
}
Rust : Json Web Token相关推荐
- JWT(JSON Web Token)简介及实现
JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...
- SpringBoot 2.x 使用 JWT(JSON Web Token)
一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...
- 在吗?认识一下JWT(JSON Web Token) ?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀 地址:my.oschina.net/u/4062 ...
- JWT(JSON Web Token)自动延长到期时间
本文翻译自:JWT (JSON Web Token) automatic prolongation of expiration I would like to implement JWT-based ...
- JSON Web Token - 在Web应用间安全地传递信息
JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 让我们来假想一下一个场景.在A用户关注了B用户的时候,系统发邮件给B用户, ...
- Python 生成 JWT(json web token) 及 解析方式
一.关于 jwt 的原理及概念可以自行在网络上搜索了解一下,这里推荐一篇写的比较好的博客 深入了解Json Web Token之概念篇 另附 JWT 的官方文档: https://jwt.io/int ...
- JSON WEB TOKEN(JWT)的分析
JSON WEB TOKEN(JWT)的分析 一般情况下,客户的会话数据会存在文件中,或者引入redis来存储,实现session的管理,但是这样操作会存在一些问题,使用文件来存储的时候,在多台机器上 ...
- JSON WEB TOKEN
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西
JSON Web Token(缩写 JWT)是目前最流行,也是最常见的跨域认证解决方案.无论是咱们后端小伙伴,还是前端小伙伴对都是需要了解. 本文介绍它的原理.使用场景.用法. 关于封面:这个冬天你过 ...
- JWT(JSON Web Token)简介
文章目录 一.JWT是什么 二.跨域认证问题 三.JWT原理 四.JWT数据结构 1.header(头部) 2.Payload(负载) 3.Signature 五.JWT是如何工作的 一.JWT是什么 ...
最新文章
- 科技公司狂挖高校AI学者:涸泽而渔还是产学双赢
- 瓷博会开幕,《锦绣中华》引围观
- java 三角依次递增在递减_java中用for循环怎样打印三角行啊,主要是不理解什么情况外层循环递增什么时候递减,如等腰三角形...
- 【杂谈】2020年如何长期、系统,全面地学习深度学习和计算机视觉,这是有三AI的完整计划...
- 《守望先锋》中的末日铁拳是怎么摧毁玩家体验的?
- .NET应用程序7种最常见的性能问题及其解决方案
- Spring Boot面试题(2020最新版)
- 舱机器人尾巴毛茸茸_毛茸茸的(Fluffy)——欧美有史以来最伟大的机器人战争机器人...
- (转)一台服务器安装两个tomcat6 服务的解决方案
- python、java大作战,python测试dubbo接口
- HDU1232 畅通工程【并查集】
- HttpClient4 TIME_WAIT和CLOSE_WAIT
- 跟我一起玩Win32开发(18):使用对话框的两个技巧
- 安利FeHelper
- MacBook Pro(13 英寸,2011 年末)A1278 官方最高支持macOS High Sierra,使用macOS Catalina Patcher成功安装macOS Catalina
- ussd代码大全_USSD查询器app
- 蓝宝石英语怎么读,sapphire是什么意思_sapphire的翻译_音标_读音_用法_例句_爱词霸在线词典...
- java tic tac toe_确定Tic Tac Toe游戏的算法
- 数据集制作之xml文件转化为csv
- 全面接入:ChatGPT杀进15个商业应用,让AI替你打工