最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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. busybox(四)完善

    目录 busybox(四)完善 proc挂载 手动挂载 proc解析 使用脚本自动挂载 使用mount-a挂载 udev/mdev 挂载 使用jffs2 文件系统格式 安装zlib 安装jffs2 生 ...

  2. Go语言系列(六)- 接口和反射

    接口 1. 定义: Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. type example interface{ Method1(参数列表) 返 ...

  3. Python中查看函数相关文档

    1.dir查看对象属性 >>> dir(set) ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', ...

  4. Python读写文件的几种方式

    一.pandas pandas模块是数据分析的大杀器,它使得对于文件相关的操作变得简单. 看一下它的简单使用 import pandas as pd # 读取 df = pd.read_csv('al ...

  5. Kubernetes之RBAC

    API Server的授权管理 API Server 内部通过用户认证后,然后进入授权流程.对合法用户进行授权并且随后在用户访问时进行鉴权,是权限管理的重要环节.API Server 目前支持一下几种 ...

  6. C++ 实现简单命令行学生管理系统

    C++ 实现简单命令行学生管理系统 预览: 编译环境是macOS.system("clear") 在windows下请换成 system("cls") #inc ...

  7. SQLServer数据库文件由高版本向低版本转换

    这个只能用2012的生成脚本功能,在高级里面把脚本兼容设置成2008,并且选择生成架构和数据(默认是只有架构)拿这个脚本在2008上跑一次就行了 sqlserver 中使用sqlcmd 执行*.sql ...

  8. luogu P5289 [十二省联考2019]皮配

    传送门 首先考虑一个正常的dp,设\(f_{i,j,k}\)为前\(i\)个学校,\(j\)人在\(\color{#0000FF}{蓝阵营}\),\(k\)人在\(\color{#654321}{吔} ...

  9. SQLserver 数据库高版本无法还原到低版本的数据解决方法

    sql server 数据库的版本只支持从上往下兼容.即高版本可以兼容低版本 .低版本不能兼容低版本.通常我们在开发时会用比较高的版本.但是部署到客户那边可能他们的数据库版本会比较低. 我们可以通过导 ...

  10. C# 执行oracle sql 语句出现中文不兼容的问题

    最近我用C#调用 操作oracle 数据库 出现了一个问题就是 我的查询语中的条件语句 含有中文 字符在C#中查询不了 ,但是在pl sql  中能够正常的查询出来. 这个原因是 C# 执行orccl ...