Token存储方式JWT
来源:互联网 发布:asp网站sql注入 编辑:程序博客网 时间:2024/06/15 11:48
JWT全称
json web token
,是一种基于JSON的开放标准(RFC 7519)协议,适用场景比如现在流行的分布式环境当中,非常适用跨平台应用程序。
比较
- 传统的
Session
是保存在服务器当中,或者内存数据库。 JWT
保存的则是在客户端中。
结构
JWT
由3个部分组成,用.
分隔
* Header
* Payload
* Signature
JWT
通常看起来像下面一样
xxxxx.yyyyy.zzzzz
Header
第一部分是请求头由两部分组成,
alg
与typ
,第一个指定的是算法,第二指定的是类型。
例如:
{ "alg": "HS256", "typ": "JWT"}
Payload
第二部分是主体信息组成,用来存储
JWT
基本信息,或者是我们的信息。
例如:
{ "sub": "1234567890", "name": "John Doe", "admin": true}
Signature
第三部分主要是给第一部分跟第二部进行签名使用的,用来验证是否是我们服务器发起的
Token
,secret是我们的密钥。
下面例子使用HMAC SHA256
算法进行签名
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
真正的JWT
看起来像下面例子一样
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1MTIyOTg4MDZ9.76mzRRk8CQfusjwxUMnIrME5ITyAPnNMdieJZhzaMc8
JWT工作原理
JWT SDK库支持
- .NET
- Python
- Node.js
- Java
- JavaScript
- Perl
- Ruby
- Elixir
- Go
- Haskell
- Rust
- Lua
- Scala
- D
- Clojure
- Objective-C
- Swift
- C
- kdb+/Q
- Delphi
- PHP
- Crystal
- 1C
JWT 主要依靠签名核心,也可自实现签名验证,主体信息存放。
评估
- 传统Cookie
Session
优点:有成熟的存储方案,Session
存储中使用最多的方案。
缺点:分布式环境中,会话一致是痛点。 - JWT
优点:分布式环境。
缺点:运算,不易控制攻击的Token
。
虽然它们两个各有缺点,但只要把他们优点相互使用上,基本就是一个成熟稳定的解决方案了。
Node.js 例子
mkdir jwtcd jwtnpm initnpm install jsonwebtoken --save
cat index.js
var jwt = require('jsonwebtoken');var token = jwt.sign({foo:'bar'}, 'lake');console.log(token)
官方已经提供很全的语言 例子
阅读全文
0 0
- Token存储方式JWT
- JWT Token
- JWT token
- JWT Token存储在Cookie还是Web Storage
- Lumen中使用JWT-Auth刷新token实现方式
- 基于JWT(Json Web Token)的授权方式
- JWT -- json web token
- JWT(JSON Web Token)
- 基于JWT Token 验证
- JSON Web Token (JWT)
- jwt(json web token)
- JWT token令牌
- JWT -- JSON WEB TOKEN
- jwt的TOKEN
- 【JWT】JWT+HA256加密 Token验证
- JSON Web Token (JWT) 简介
- 什么是 JWT -- JSON WEB TOKEN
- JWT(JSON WEB TOKEN)概要
- 索引总结
- Python系列学习笔记(二)——基础语法规则
- 车牌识别系统概述
- eslint的使用 --save 和--save-dev
- Jacobi迭代法
- Token存储方式JWT
- Python神器--VirtualEnv
- linux下预处理、编译、汇编、链接及gdb调试
- 前端小案例-纯css做缩略图悬停效果
- ACM-12月3日周日周末训练心得
- MySQL简单语法(1)
- C# Linq版七层登录
- Mondriaan's Dream
- 19 迭代器iterator的设计原则(学自Boolean)