最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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. 机器学习 - 正则化L1 L2

    L1 L2 Regularization 表示方式: $L_2\text{ regularization term} = ||\boldsymbol w||_2^2 = {w_1^2 + w_2^2 ...

  2. Mac tree命令的使用,输出目录树结构

    安装: brew install tree 常用命令: tree --help:  查看帮助信息 tree -d:  只显示文件夹 tree -D:  显示文件的最后修改时间   tree -I no ...

  3. Python包中__init__.py作用

    在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下: Pycharm下的package树结构: 在Finder中的目录结 ...

  4. React Router v4 页面传值的三种方法

    传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...

  5. 算法时间计算:logA(N)与O(n)

    算法运行时间估算常见O(log(n))log:求对数例:a^b=na为底数,b为n的对数记作:logA(n)=b  ->求N的对数 计算器验算:计算器的log默认以10为底  输入 10,log ...

  6. tcp协议的简单理解

    tpc协议属于传输层协议,本篇主要介绍下几个概念,以及握手和挥手的过程. 1.tcp的几个概念 位码:即tcp标志位,有6种提示 SYN:synchronus,表示建立联机. ACK:acknowle ...

  7. [转] fastText

    mark- from : https://www.jiqizhixin.com/articles/2018-06-05-3 fastText的起源 fastText是FAIR(Facebook AIR ...

  8. POJ 1251 Jungle Roads (最小生成树)

    题目: Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ...

  9. Visual Studio Code 的使用方法和技巧

    VSCode是微软推出的一款轻量编辑器,采取了和VS相同的UI界面,搭配合适的插件可以优化前端开发的体验. 布局:左侧是用于展示所要编辑的所有文件和文件夹的文件管理器,依次是`资源管理器`,`搜索`, ...

  10. tomcat日志格式中的含义

    %a - 远程IP地址 %A - 本地IP地址 %b - 发送的字节数,不包括HTTP头,或“ - ”如果没有发送字节 %B - 发送的字节数,不包括HTTP头 %h - 远程主机名 %H - 请求协 ...