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 ...
随机推荐
- $m$ 整除 $10^k$ 的一个充分条件
若 (1) 既约分数 $\cfrac{n}{m}$ 满足 $0<\cfrac{n}{m}<1$; (2) 分数 $\cfrac{n}{m}$ 可以化为小数部分的一个循环节有 $k$ 位数字 ...
- RoIPooling
. 代码: template <typename Dtype> void ROIPoolingLayer<Dtype>::Forward_cpu(const vector< ...
- Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays
题目链接 题意:给你两个数x,yx,yx,y,让你构造一些长为yyy的数列,让这个数列的累乘为xxx,输出方案数. 思路:考虑对xxx进行质因数分解,设某个质因子PiP_iPi的的幂为kkk,则这个 ...
- 简易解说拉格朗日对偶(Lagrange duality)
引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...
- python进制转化函数,10进制字符串互转,16进制字符串互转
来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...
- 让CPU占用率曲线听你指挥
使用GetTickCount()和Sleep(): Code#include <stdio.h> #include <unistd.h> #include <time.h ...
- GIt -- Window下配置 git
全局配置 git config --global user.name "账户名" git config --global use r.email '账户邮箱' 生成ssh,命令 ...
- mysql查看实时连接数
怎么实时查看mysql当前连接数 如何实时查看mysql当前连接数? 1.查看当前所有连接的详细资料:./mysqladmin -uadmin -p -h10.140.1.1 processlist ...
- Centos查看系统CPU个数、核心数、线程数
1.查看 CPU 物理个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看 CPU 核心数量 grep 'core id' /proc/ ...
- query string parameters 、 Form Data 、 Request Payload
微信小程序ajax向后台传递参数的时候总是报400错误 然后看了一下network 发现是query string parameters,但是我写的header如下 header:{ "Co ...