JSON WEB Token(JWT)

最近面试被问及单点登录怎么解决?本身的项目先后端分离,本身实现token认证,token有失效时间,token中包含用户基本的信息。且一个当用户从新登录后,原来的token就会失效,这么安全的一个token怎么就被别人认为不安全了呢?本身孤陋寡闻,被问及jwt?没听过的名词,一查rfc,原来这么回事,和本身实现的token认证彻底差很少嘛,并且比jwt自己更安全,即便token被泄露,只须要用户从新登录认证一次,泄露的token当即失效,但jwt不同,它若是泄露,在有效期内,依然有效,不可控。不过应该也能经过技术手段解决这种问题git

JSON WEB Token (JWT)

摘要

JSON Web Token(JWT) 是一个简洁,二者传输之间是URL安全的方式。
这个声明在JWT中被编码为JSON对象被用于负载(payload)(JWS)签名结构或做为一个明文的
JSON Web 加密(JWE)结构,以MAC(消息受权码)或加密方式使这个声明为数字签名或完整性保护web

  • 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

  • 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结构
相关文章
相关标签/搜索