我一直用Java编写RESTful服务。这是我到目前为止所理解的(如果我错了,请纠正我):
令牌授权使用 JSON Web令牌(JWT)完成,它有三个部分:标头,有效负载和密钥(在客户端和服务器之间共享)。
我在理解JWT时理解了这个概念并偶然发现了 JSON Web Signature(JWS)。
JWS也是一个类似于JWT的编码实体,具有标头,有效负载和共享密钥。
问题:这两个概念有什么区别,即JWT和JWS?如果它们在技术上相似,那么实现的区别是什么?
这是我第一次使用基于令牌的身份验证,所以我可能完全误解了这个概念。
P.S。我在浏览this website上的示例时了解了JWS。
答案 0 :(得分:40)
JWT实际上使用 JWS作为其签名,来自规范:
JSON Web Token(JWT)是一种紧凑,URL安全的表示方式 声称要在双方之间转让。 JWT的主张是 编码为用作的JavaScript Object Notation(JSON)对象 JSON Web签名(JWS)结构的有效负载或作为 JSON Web加密(JWE)结构的明文,启用 声称要进行数字签名或MAC和/或加密。
因此JWT是一个JWS结构,其中JSON对象作为有效负载。已定义了一些可选键(或声明),例如iss
,aud
,exp
等。
这也意味着其完整性保护不仅限于共享机密,还可以使用公钥/私钥加密。
答案 1 :(得分:2)