JSON Web Signature(JWS)和JSON Web Token(JWT)有什么区别?

leo*_*leo 47 java rest restful-authentication jwt http-token-authentication

我一直用Java编写RESTful服务.这是我到目前为止所理解的(如果我错了,请纠正我):

令牌授权使用JSON Web令牌(JWT)完成,它包含三个部分:头,有效负载和秘密(在客户端和服务器之间共享).

我理解这个概念,并在阅读JWT时偶然发现了JSON Web Signature(JWS).

JWS也是类似于JWT的编码实体,具有头部,有效载荷和共享秘密.

问题:两个概念有什么区别,即JWT和JWS?如果它们在技术上相似,那么它们的实现有何不同?

这是我第一次使用基于令牌的身份验证,所以我可能完全误解了这个概念.

PS我在浏览本网站上的示例时了解了JWS .

Han*_* Z. 43

JWT实际上使用 JWS作为其签名,来自规范:

JSON Web令牌(JWT)是一种紧凑的,URL安全的方式,用于表示要在双方之间转移的声明.JWT中的声明被编码为JavaScript对象表示法(JSON)对象,该对象用作JSON Web签名(JWS)结构的有效负载或JSON Web加密(JWE)结构的明文,使声明成为可能数字签名或MACed和/或加密.

因此,JWT是一个JWS结构,其中JSON对象作为有效负载.一些可选键(或权利要求书)已经被定义,例如iss,aud,exp等.

这也意味着其完整性保护不仅限于共享秘密,还可以使用公钥/私钥密码术.


Pro*_*was 12

简而言之,JWT(JSON Web Token)是一种将作为名称-值对的声明表示为 JSON 对象的方法。JWT规范 定义了一组要在两方之间使用或传输的标准声明。

另一方面, JWS(JSON Web 签名)是一种在保证完整性的情况下在两方之间传输 JWT 负载的机制。JWS规范定义了多种签名(例如 HMAC 或数字签名)有效负载的方式以及序列化内容以跨网络传输的多种方式。