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 ...
随机推荐
- java 中使用正则表达式操作字符串
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFl ...
- 基于alpine制作php镜像
alpine包搜索https://pkgs.alpinelinux.org/ 安装依赖库 apk add --no-cache xxx 可以基于php apline镜像自行增加或删除扩展. https ...
- java.lang.OutOfMemoryError: Java heap space内存不足问题
今晚,在定义一个new int[19001][13001]的数组时候内存不够:特转了一下方法: Exception in thread "main" java.lang.OutOf ...
- HDU 5983(模拟魔方 模拟)
题意是说给定一个 2*2 魔方的各个面的情况,问是否能转动不超过一次使得魔方复原. 思路是先在输入的时候统计一下已完成的面数,要想以最多一次的转动使得魔方复原,那么已完成的面数只能是 2 面或者 6 ...
- SpringBoot系列: url重定向和转发
Web UI项目中, 很多 Spring controller 视图函数直接返回 html 页面, 还有一些视图函数是要重定向或转发到其他的 url 上. redirect 和 forward的区别: ...
- Latex "Error: Extra alignment tab has been changed to \cr. "
Latex 编译时出现 Error: Extra alignment tab has been changed to \cr. 是因为\begin{tabular}后面的参数指定为7列,而实际排了8 ...
- struts2简单入门-数据校验
数据校验流程 校验数据的方式 重写execute方法在内部写校验代码 public class LoginAdminAction extends ActionSupport { private Use ...
- ZH奶酪:Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP)
(Linux Operating System,Apache Web Server,MySQL database,PHP) 首先,一个三行命令搞定的方法: sudo apt-get update su ...
- django中的反向解析
1,定义: 随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超 ...
- python3 字典常见用法总结
python3 字典常见用法总结 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表 ...