• JSON WEB Token(JWT)


    最近面试被问及单点登陆怎么解决?自己的项目前后端分离,自己实现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结构
  • 相关阅读:
    第 3 章(类型、值和变量)(3.1~ 3.5)
    第七章(插件的使用和写法)(7.6 编写 jQuery 插件)
    第七章(插件的使用和写法)(7.4 jQuery UI 插件 7.5 管理Cookie的插件 --- Cookie)
    第七章(插件的使用和写法)(7.3 动态绑定事件插件 ----- livequery)(未完成)
    第七章(插件的使用和写法)(7.2 jQuery 表单插件 ----- Form)
    第七章(插件的使用和写法)(7.1 jQuery 表单验证插件 ----- Validation)
    第六章(jQuery 与 Ajax 的应用)(6.8 基于 jQuery 的 Ajax 聊天室程序)(未完成)
    第六章(jQuery 与 Ajax 的应用)(6.6 序列化元素 6.7 jQuery 中的 Ajax 事件)
    Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
    Python爬虫实战七之计算大学本学期绩点
  • 原文地址:https://www.cnblogs.com/zengchunyun/p/9012981.html
Copyright © 2020-2023  润新知