最近面试被问及单点登录怎么解决?本身的项目先后端分离,本身实现token认证,token有失效时间,token中包含用户基本的信息。且一个当用户从新登录后,原来的token就会失效,这么安全的一个token怎么就被别人认为不安全了呢?本身孤陋寡闻,被问及jwt?没听过的名词,一查rfc,原来这么回事,和本身实现的token认证彻底差很少嘛,并且比jwt自己更安全,即便token被泄露,只须要用户从新登录认证一次,泄露的token当即失效,但jwt不同,它若是泄露,在有效期内,依然有效,不可控。不过应该也能经过技术手段解决这种问题git
JSON Web Token(JWT) 是一个简洁,二者传输之间是URL安全的方式。
这个声明在JWT中被编码为JSON对象被用于负载(payload)(JWS)签名结构或做为一个明文的
JSON Web 加密(JWE)结构,以MAC(消息受权码)或加密方式使这个声明为数字签名或完整性保护web
JWT 是一个简洁声明格式,同于空间受限的环境,如HTTP受权头部和URI查询参数。
JWT将声明编码为JSON对象用于传输。它使用一个JWS的数据结构或JWE的数据结构。
JWT与jot单词发音同样面试
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结构