最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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. 包管理工具之Pipenv

    pipenv 都包含什么? pipenv 是 Pipfile 主要倡导者.requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile.pip.click.requ ...

  2. Hbase CMS GC 调优。

    export HBASE_OPTS="-XX:+UseConcMarkSweepGC" export HBASE_LOG_DIR=/app/hbase/logexport HBAS ...

  3. 分布式监控系统开发【day37】:服务端生成配置数据(四)

    一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...

  4. admin 后台操作表格

    1. app下创建 templates  运行的时候 先找全局的templates——> 按照app的注册顺序找templates中的文件 2. app下在创建一个urls.py include ...

  5. 同步Name到Comment 及 同步 Comment 到Name

    在 PowerDesigner执行命令  Tools->Execute Commands->Edit/Run Scripts 代码一:将Name中的字符COPY至Comment中 Opti ...

  6. [译]Ocelot - Headers Transformation

    原文 Add to Request 为上游请求添加请求头,只需如下一样将下面的配置添加到一个ReRoute里: "UpstreamHeaderTransform": { " ...

  7. 第二章 Android系统与嵌入式开发

    第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中 ...

  8. 电子医疗设备创新研发应该用i.MX6Q开发板吗?为医疗设备提供解决方案

    伴随医疗信息化.移动化.智能化的不断发展,居民对自身健康的关注度持续加强,全球医疗电子产业近年来持续保持快速增长态势.同时,源于庞大的人口基数以及迅速增长的老龄化人口带来持续增长的医疗服务需求,加之全 ...

  9. vlan 知识学习

    背景     有人反映打印机总是提示ip冲突,经检查,打印机虽然设置了固定ip,但是所有员工在路由器都是设置了DHCP,所以会存在员工占用打印机IP 情况,在路由器添加某一段的ip不自动分配解决此问题 ...

  10. Apache JMeter压力测试实例

    脚本录制 脚本录制,JMeter启用WEB代理,浏览器把代理上网设置为JMeter所在的IP地址,自己电脑就是127.0.0.1代理端口默认8080.至于浏览器修改代理上网服务器,不做截图. Jmet ...