JSON WEB Token(JWT)
最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现token认证,token有失效时间,token中包含用户基本的信息。且一个当用户重新登陆后,原来的token就会失效,这么安全的一个token怎么就被别人认为不安全了呢?自己孤陋寡闻,被问及jwt?没听过的名词,一查rfc,原来这么回事,和自己实现的token认证完全差不多嘛,而且比jwt本身更安全,即使token被泄露,只需要用户重新登陆认证一次,泄露的token立即失效,但jwt不一样,它如果泄露,在有效期内,依然有效,不可控。不过应该也能通过技术手段解决这种问题
JSON WEB Token (JWT)
摘要
JSON Web Token(JWT) 是一个简洁,两者传输之间是URL安全的方式。
这个声明在JWT中被编码为JSON对象被用于负载(payload)(JWS)签名结构或作为一个明文的
JSON Web 加密(JWE)结构,以MAC(消息授权码)或加密方式使这个声明为数字签名或完整性保护
- 1 介绍
- 2 术语
- 3 JWT概述
- 3.1 JWT例子
- 4 JWT声明
- 4.1 注册声明名称
- 4.1.1 iss(Issuer)声明
- 4.1.2 sub(Subject)声明
- 4.1.3 aud(Audience)声明
- 4.1.4 exp(Expiration Time)声明
- 4.1.5 nbf(Not Before)声明
- 4.1.6 iat(Issued At)声明
- 4.1.7 jti(JWT ID)声明
- 4.2 公共声明名称
- 4.3 私有声明名称
- 5 JOSE 头部
- 5.1 typ(Type)头部参数
- 5.2 cty(Content Type)头部参数
- 5.3 将声明复制为头部参数
- 6 非安全(Unsecured)的JWTs
- 6.1 非安全的JWTs例子
- 7 创建和验证JWTs
- 7.1 创建一个JWT
- 7.2 验证一个JWT
- 7.3 字符串比较规则
- 8 实现要求
- 9 URI是一个JWT
- 10 IANA思考
- 10.1 JSON Web Token声明注册
- 10.1.1 注册模版
- 10.1.2 初始化注册内容
- 10.2 子命名空间注册 urn:ietf:params:oauth:token-type:jwt
- 10.2.1 注册内容
- 10.3 媒体类型注册
- 10.3.1 注册内容
- 10.4 头部参数名称注册
- 10.4.1 注册内容
- 11 安全考虑
- 11.1 信任依据
- 11.2 签名或加密顺序
- 12 隐私考虑
- 13 参考
- 13.1 规范参考
- 13.2 信息性参考
- 附录A JWT例子
- a.1 JWT加密示例
- a.2 JWT嵌套示例
- 附录B JWTs到SAML关系断言
- 附录C JWTs到SWTs(简单Web token)关系
1.介绍
JWT 是一个简洁声明格式,同于空间受限的环境,如HTTP授权头部和URI查询参数。
JWT将声明编码为JSON对象用于传输。它使用一个JWS的数据结构或JWE的数据结构。
JWT与jot单词发音一样
2.术语
JWS定义规范
- JSON Web Signature(JWS)
- Base64uri Encoding
- Header parameter
- JOSE Header
- JWS Compact Serialization
- JWS payload
- JWS Signature
- Unsecured JWS
JWE定义规范
- JSON Web Encryption(JWE)
- Content Encryption Key(CEK)
- JWE Compact Serialization
- JWE Encrypted Key
- JWE Initialization Vector
Internet Security Glossary定义规范
- Ciphertext
- Digital Signature
- Message Authentication Code(MAC)
- Plaintext
JSON Web Token(JWT)
- 一个字符串的集合声明作为一个JSON对象编码于JWS或JWE结构内,使这个声明变为数字签名或MAC或加密
JWT Claims Set
- 包含由JWT传输的声明的JSON对象
Claim
- 关于某个主题的一条信息,一个声明表示由一个名称和值组成的
- Claim Name
这个名称是声明的一部分,总是一个字符串类型
- Claim Value
这个值是声明的一部分,一个声明的值可以是任意的JSON对象
- Nested JWT
使用嵌套签名和/或加密的JWT,在嵌套的JWT中,被用作一个有效载荷或明文值分别包含JWS或JWE结构
JSON WEB Token(JWT)的更多相关文章
- JSON Web Token (JWT) 简介
JSON Web Token (JWT) 是一种基于 token 的认证方案. JSON Web Token 的结构 一个 JWT token 看起来是这样的: eyJhbGciOiJIUzI1NiI ...
- JSON Web Token (JWT) 实现与使用方法
1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...
- Json Web Token(JWT)详解
什么是Json Web Token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的 ...
- JSON Web Token (JWT),服务端信息传输安全解决方案。
JWT介绍 JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑独立的基于JSON对象在各方之间安全地传输信息的方式.这些信息可以被验证和信任,因为它是数字签名的 ...
- 漫谈JSON Web Token(JWT)
一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...
- 基于 Token 的身份验证:JSON Web Token(JWT)
1.传统身份验证和JWT的身份验证 传统身份验证: HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过 ...
- JSON Web Token (JWT) - Introduction
To validate the challenge, connect as admin.------------以admin登陆 https://jwt.io/introduction/ ...
- json web token JWT实现TP5创建和验证
根据博客进行jwt初始化配置 https://blog.csdn.net/weixin_43389208/article/details/117442266?spm=1001.2014.3001.55 ...
- JSON Web Token (JWT) - Weak secret
This API with its /hello endpoint (accessible with GET) seems rather welcoming at first glance but i ...
随机推荐
- busybox(四)完善
目录 busybox(四)完善 proc挂载 手动挂载 proc解析 使用脚本自动挂载 使用mount-a挂载 udev/mdev 挂载 使用jffs2 文件系统格式 安装zlib 安装jffs2 生 ...
- Go语言系列(六)- 接口和反射
接口 1. 定义: Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. type example interface{ Method1(参数列表) 返 ...
- Python中查看函数相关文档
1.dir查看对象属性 >>> dir(set) ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', ...
- Python读写文件的几种方式
一.pandas pandas模块是数据分析的大杀器,它使得对于文件相关的操作变得简单. 看一下它的简单使用 import pandas as pd # 读取 df = pd.read_csv('al ...
- Kubernetes之RBAC
API Server的授权管理 API Server 内部通过用户认证后,然后进入授权流程.对合法用户进行授权并且随后在用户访问时进行鉴权,是权限管理的重要环节.API Server 目前支持一下几种 ...
- C++ 实现简单命令行学生管理系统
C++ 实现简单命令行学生管理系统 预览: 编译环境是macOS.system("clear") 在windows下请换成 system("cls") #inc ...
- SQLServer数据库文件由高版本向低版本转换
这个只能用2012的生成脚本功能,在高级里面把脚本兼容设置成2008,并且选择生成架构和数据(默认是只有架构)拿这个脚本在2008上跑一次就行了 sqlserver 中使用sqlcmd 执行*.sql ...
- luogu P5289 [十二省联考2019]皮配
传送门 首先考虑一个正常的dp,设\(f_{i,j,k}\)为前\(i\)个学校,\(j\)人在\(\color{#0000FF}{蓝阵营}\),\(k\)人在\(\color{#654321}{吔} ...
- SQLserver 数据库高版本无法还原到低版本的数据解决方法
sql server 数据库的版本只支持从上往下兼容.即高版本可以兼容低版本 .低版本不能兼容低版本.通常我们在开发时会用比较高的版本.但是部署到客户那边可能他们的数据库版本会比较低. 我们可以通过导 ...
- C# 执行oracle sql 语句出现中文不兼容的问题
最近我用C#调用 操作oracle 数据库 出现了一个问题就是 我的查询语中的条件语句 含有中文 字符在C#中查询不了 ,但是在pl sql 中能够正常的查询出来. 这个原因是 C# 执行orccl ...