最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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. java 中使用正则表达式操作字符串

    import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFl ...

  2. 基于alpine制作php镜像

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

  3. java.lang.OutOfMemoryError: Java heap space内存不足问题

    今晚,在定义一个new int[19001][13001]的数组时候内存不够:特转了一下方法: Exception in thread "main" java.lang.OutOf ...

  4. HDU 5983(模拟魔方 模拟)

    题意是说给定一个 2*2 魔方的各个面的情况,问是否能转动不超过一次使得魔方复原. 思路是先在输入的时候统计一下已完成的面数,要想以最多一次的转动使得魔方复原,那么已完成的面数只能是 2 面或者 6 ...

  5. SpringBoot系列: url重定向和转发

    Web UI项目中, 很多 Spring controller 视图函数直接返回 html 页面, 还有一些视图函数是要重定向或转发到其他的 url 上. redirect 和 forward的区别: ...

  6. Latex "Error: Extra alignment tab has been changed to \cr. "

    Latex 编译时出现 Error: Extra alignment tab has been changed to \cr.  是因为\begin{tabular}后面的参数指定为7列,而实际排了8 ...

  7. struts2简单入门-数据校验

    数据校验流程 校验数据的方式 重写execute方法在内部写校验代码 public class LoginAdminAction extends ActionSupport { private Use ...

  8. ZH奶酪:Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP)

    (Linux Operating System,Apache Web Server,MySQL database,PHP) 首先,一个三行命令搞定的方法: sudo apt-get update su ...

  9. django中的反向解析

    1,定义: 随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超 ...

  10. python3 字典常见用法总结

    python3 字典常见用法总结 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表 ...