最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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)的更多相关文章

  1. JSON Web Token (JWT) 简介

    JSON Web Token (JWT) 是一种基于 token 的认证方案. JSON Web Token 的结构 一个 JWT token 看起来是这样的: eyJhbGciOiJIUzI1NiI ...

  2. JSON Web Token (JWT) 实现与使用方法

    1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...

  3. Json Web Token(JWT)详解

    什么是Json Web Token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的 ...

  4. JSON Web Token (JWT),服务端信息传输安全解决方案。

    JWT介绍 JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑独立的基于JSON对象在各方之间安全地传输信息的方式.这些信息可以被验证和信任,因为它是数字签名的 ...

  5. 漫谈JSON Web Token(JWT)

    一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...

  6. 基于 Token 的身份验证:JSON Web Token(JWT)

    1.传统身份验证和JWT的身份验证 传统身份验证:       HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过 ...

  7. JSON Web Token (JWT) - Introduction

    To validate the challenge, connect as admin.------------以admin登陆 https://jwt.io/introduction/        ...

  8. json web token JWT实现TP5创建和验证

    根据博客进行jwt初始化配置 https://blog.csdn.net/weixin_43389208/article/details/117442266?spm=1001.2014.3001.55 ...

  9. JSON Web Token (JWT) - Weak secret

    This API with its /hello endpoint (accessible with GET) seems rather welcoming at first glance but i ...

随机推荐

  1. 金融量化分析【day113】:聚宽自带策略

    一.策略代码 # 导入函数库 from jqdata import * # 初始化函数,设定基准等等 def initialize(context): # 设定沪深300作为基准 set_benchm ...

  2. Maven 学习总结 (二) 之 生命周期与插件

    五.生命周期与插件 1.Maven有三套独立的生命周期:clean.default和site. clean生命周期的目的是清理项目,default生命周期的目的是构建项目,site生命周期的目的是建立 ...

  3. 基于alpine制作php镜像

    alpine包搜索https://pkgs.alpinelinux.org/ 安装依赖库 apk add --no-cache xxx 可以基于php apline镜像自行增加或删除扩展. https ...

  4. ACM-ICPC 2018 沈阳赛区网络预赛 I Lattice's basics in digital electronics(模拟)

    https://nanti.jisuanke.com/t/31450 题意 给出一个映射(左为ascll值),然后给出一个16进制的数,要求先将16进制转化为2进制然后每9位判断,若前8位有奇数个1且 ...

  5. 基于STM32F1的语音合成芯片SYN6288驱动

    目录 说明 SYN6288.h SYN6288.c 说明 基于USART2制作,封装了各种通信协议 SYN6288.h #ifndef _SYN6288_H_ #define _SYN6288_H_ ...

  6. LCA学习笔记

    写在前面 目录 一.LCA的定义 二.暴力法求LCA 三.倍增法求LCA 四.树链剖分求LCA 五.LCA典型例题 题目完成度 一.LCA的定义 LCA指的是最近公共祖先.具体地,给定一棵有根树,若结 ...

  7. JAVA进阶12

    间歇性混吃等死,持续性踌躇满志系列-------------第12天 1.字符串的概述和特点 java.lang.String类代表字符串 API当中说,Java程序中所有的字符串字面值(如“abc& ...

  8. installshield中杀死某一个进程

    ///////////////////////////////////////////////// // Function prototypes. ////////////////////////// ...

  9. mvc webapi+autofac + session 的使用

    先说说我的项目情况:MVC5+AUTOFAC,下面就直接说说怎么加入webapi.autofac的配置.登录使用session 一.MVC5添加WEBAPI 1.添加 参考文章:https://blo ...

  10. C++实验一

    2-28 #include <iostream> using namespace std; int main() {char x; cout<<"Menu: A(dd ...