JWT简介json web token bear token
2024-09-02 03:05:06
"exp": 1502360328,(相差3600s)
"nbf": ,
"jti": "R0Gd00AvOW259LGo",
"sub": 11,
"prv": "3787fba1618a930526aca6c8bb9b44b83f297726"
}
这里面的前6个字段都是由JWT的标准所定义的。
- sub: 该JWT所面向的用户
- iss: 该JWT的签发者
- iat(issued at): 在什么时候签发的token
- exp(expires): token什么时候过期
- nbf(not before):token在此时间之前不能被接收处理
- jti:JWT ID为web token提供唯一标识
iss是issuer的简写,表明请求的实体,可以是发出请求的用户的信息。
There are three types of claims: reserved, public, and privateclaims.
像上面的是reserved:
iss (issuer), exp (expiration time), sub(subject), aud (audience), and others.
An example of payload could be: { "sub": "1234567890", "name": "John Doe", "admin": true }
{ "iss": "John Wu JWT", "iat": 1441593502, "exp": 1441594722, "aud": "www.example.com", "sub": "jrocket@example.com", "from_user": "B", "target_user": "A" } |
这里面的前五个字段都是由JWT的标准所定义的。
aud: 接收该JWT的一方
将上面的JSON对象进行[base64编码]可以得到下面的字符串。这个字符串我们将它称作JWT的Payload(载荷)。
1 | eyJpc3MiOiJKb2huIFd1IEpXVCIsImlhdCI6MTQ0MTU5MzUwMiwiZXhwIjoxNDQxNTk0NzIyLCJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJqcm9ja2V0QGV4YW1 |
JWT还需要一个头部,头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。
1 2 3 4 |
{ "typ": "JWT", "alg": "HS256" |
对它也要进行Base64编码,之后的字符串就成了JWT的Header(头部)。
1 | eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 |
将上面的两个编码后的字符串用句号.连接在一起(头部在前),就形成了
1 | eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0 |
最后,我们将上面拼接完的字符串用HS256算法进行加密。在加密的时候,我们还需要提供一个密钥(secret)
得到我们加密后的内容
1 | rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM |
最后将这一部分签名也拼接在被签名的字符串后面(2个句号),我们就得到了完整的JWT
1 | eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM |
多点登录”
Set-Cookie: jwt=lll.zzz.xxx; HttpOnly; max-age=980000; domain=.taobao.com
必须使用HttpOnly属性来防止Cookie被JavaScript读取,从而避免跨站脚本攻击(XSS攻击)。
注意domain必须设置为一个点加顶级域名,即.taobao.com。这样,taobao.com和*.taobao.com就都可以接受到这个Cookie,并获取JWT了。
一般放在HTTP的headers 参数里面的authorization里面,值的前面加Bearer关键字和空格。除此之外,也可以在url和request body中传递。
Authorization: Bearer {yourtokenhere}
- OAuth是一个授权的开放网络标准,最终目的是取得token(令牌)
- Token 令牌,视为用户登录成功,通行的唯一令牌
- JWT是生成token的轻巧规范,可以结合一起使用
Unresolvable dependency resolving [Parameter #0 [ $app ]] in class Illuminate\Cache\CacheManager
Dependency Bind from
$app->bind(Illuminate\Cache\CacheManager::class, function ($app) { return new Illuminate\Cache\CacheManager($app); });
Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Auth\AuthManager
$app->bind(Illuminate\Auth\AuthManager::class, function ($app) { return new Illuminate\Auth\AuthManager($app); });
最新文章
- Django Admin 录入中文错误解决办法
- git使用学习
- IOS App Integrate Google Map Problems and Method to solve them
- Java中的继承与组合(转载)
- mac平台scala开发环境搭建
- thanksgiving day (eat)
- TMS320C54x系列DSP的CPU与外设&mdash;&mdash;第5章 数据寻址
- Ping的过程详解
- 从奥鹏一个答案提取页面 看jquery知识点
- Sublime Text中安装插件来实现px与rem间的换算
- Single linked list by cursor
- C语言——第一次作业
- android EventBus详解(三)
- 1.写页面 2.css的继承属性有哪些 3.margin对布局的影响
- Centos创建用户
- jQuery(五)
- (python数据分析)第03章 Python的数据结构、函数和文件
- 浅谈log4j-4-不同目的地(转)
- vue之后台管理系统遇到的几个痛点
- openfire url get提交 中文乱码问题