https://jwt.io/introduction/
一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷Payload与签名。
 JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA.
/*
|--------------------------------------------------------------------------
| Required Claims
|--------------------------------------------------------------------------
|
| Specify the required claims that must exist in any token.
| A TokenInvalidException will be thrown if any of these claims are not
| present in the payload.
|
*/
'required_claims' => [
'iss',
'iat',
'exp',
'nbf',
'sub',
'jti',
],
示例:
{
"iss": "http://laravel_api.app/api/register",
"iat": 1502356728,
"exp": 1502360328,(相差3600s)
"nbf": 1502356728,
"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
https://your.awesome-app.com/make-friend/?jwt=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的轻巧规范,可以结合一起使用
如何防止第三方网站私自调用网站的后端接口
http://qtsite.cn/post/61.html
http://blog.csdn.net/hooloo/article/details/49714259
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); });
http://www.jianshu.com/p/576dbf44b2ae
http://laravelacademy.org/post/3640.html
http://blog.leapoahead.com/2015/09/06/understanding-jwt/
https://www.zhihu.com/question/36135526

JWT简介json web token bear token相关推荐

  1. SpringBoot 2.x 使用 JWT(JSON Web Token)

    一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...

  2. 理解JWT(JSON Web Token)认证及python实践

    最近想做个小程序,需要用到授权认证流程.以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式. 这一篇主要内容是 JWT 的认证原理,以及p ...

  3. JWT(Json web token)认证详解

    JWT(Json web token)认证详解 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该to ...

  4. JWT【JSON Web Token】 简述

    JWT全称JSON Web Token[http://www.jwt.io/],用于发送可通过数字签名和认证的东西,它包含一个紧凑的,URL安全的JSON对象,服务端可通过解析该值来验证是否有操作权限 ...

  5. JWT(JSON Web Token)的基本原理

    JWT(JSON Web Token)的基本原理 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案 一.跨域认证的问题 1.用户向服务器发送用户名和密码. 2.服务器验证通过 ...

  6. python token认证_理解JWT(JSON Web Token)认证及python实践

    最近想做个小程序,需要用到授权认证流程.以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式. 这一篇主要内容是 JWT 的认证原理,以及p ...

  7. 用户鉴权、JWT(JSON Web Token)是什么?

    什么是用户鉴权 用户鉴权,一种用于在通信网络中对试图访问来自服务提供商的服务的用户进行鉴权的方法.用于用户登陆到DSMP或使用数据业务时,业务网关或Portal发送此消息到DSMP,对该用户使用数据业 ...

  8. JWT(JSON Web Token)自动延长到期时间

    本文翻译自:JWT (JSON Web Token) automatic prolongation of expiration I would like to implement JWT-based ...

  9. php oauth2 和 jwt,jwt-auth: thinkphp 的 jwt (JSON Web Token)身份验证扩展包,支持Swoole...

    JWT-AUTH thinkphp的jwt(JSON Web Token)身份验证包.支持Header.Cookie.Param等多种传参方式.包含:验证.验证并且自动刷新等多种中间件. 支持Swoo ...

最新文章

  1. java中的几种对象(PO,VO,DAO,BO,POJO)
  2. mpls 保留标签值_MPLS 标签模式/分发行为/保留模式/标签空间
  3. Android性能优化——腾讯、字节、阿里、百度、网易等互联网公司项目实战+案例分析(附PDF)
  4. 如何用 Redis 实现延迟队列?
  5. 哪些信用卡取现0手续费?
  6. linux---基础02
  7. div背景图自适应占满
  8. sqlmap之tamper绕过
  9. vue子父组件之间的传值
  10. windows meson ,ninja安装以及vs2017编译 libnice
  11. Visual Studio 20052008 各个版本下载
  12. 由WMT机器翻译双向夺冠看搜狗语音交互布局
  13. jsencrypt加密,并解决Message too long for RSA
  14. 黑客入侵16进制密码_密码与密码黑客如何诱骗您入侵您的详细信息
  15. python如何画三角形的外接圆_用python画三角形外接圆和内切圆
  16. Mac之如何将文件夹加入个人收藏
  17. antd从v2升级到v3
  18. 阡陌路 - 自动档车的开法(转)
  19. java对一个集合中的汉字字段根据拼音排序
  20. 国产替代AM26LS31, AM26LS32A, AM26C31, AM26C32

热门文章

  1. Windows 到 Linux 之旅: 第 8 部分. 备份与恢复
  2. Windows Vista即将发布SP1
  3. 移动端 html2canvas 踩坑记录
  4. js如何操作表格(常用属性方法汇总)
  5. React-Native 之 GD (一)目录结构与第三方框架使用与主题框架搭建
  6. 嵌入式 自旋锁、互斥锁、读写锁、递归锁
  7. mysql for visual
  8. volatile的用法
  9. 美卫星拍最详细3D地图 覆盖地球99%大陆
  10. linux大爱版本Vinux 盲人也能用的OS