我认为jwt.io不能很好地解释为什么或何时使用jwt。它解释了可以考虑的其他事情,但决定是否使用它或者为什么它会很方便并不重要。
我想为什么要使用JSON Web令牌?
认证 将会话存储在服务之外并从无国籍专业人员那里获益是有用的(例如:升级)。
因此,JWT将不会实现远程会话解决方案,这将需要例如memcached基础架构,令牌管理器软件模块来创建,更新,使令牌无效。但它的缺点是会话信息将在客户端中暴露出来。
信息交换:分享您的密码(或公钥),以便允许发件人签署令牌。 为什么不为此使用https或证书?
什么时候应该使用JSON Web令牌?
身份验证:这是使用JWT的最常见方案。一旦用户登录,每个后续请求将包括JWT,允许用户访问该令牌允许的路由,服务和资源。 Single Sign On是一种现在广泛使用JWT的功能,因为它的开销很小,并且能够在不同的域中轻松使用。
信息交换:JSON Web令牌是在各方之间安全传输信息的好方法。因为JWT可以签名 - 例如,使用公钥/私钥对 - 您可以确定发件人是他们所说的人。此外,由于使用标头和有效负载计算签名,您还可以验证内容是否已被篡改。
JSON Web令牌如何工作?
Jtw-Diagram(某种序列图)
我们为什么要使用JSON Web令牌?
与简单Web令牌(SWT)和安全断言标记语言令牌(SAML)相比,让我们谈谈JSON Web令牌(JWT)的好处。
由于JSON比XML更简洁,因此在编码时它的大小也更小,使得JWT比SAML更紧凑。这使得JWT成为在HTML和HTTP环境中传递的不错选择。 **不是jwt本身属性,它的json属性**
安全方面,SWT只能使用HMAC算法通过共享密钥对称签名。但是,JWT和SAML令牌可以使用X.509证书形式的公钥/私钥对进行签名。与签名JSON的简单性相比,使用XML数字签名对XML进行签名而不会引入模糊的安全漏洞非常困难。 **公钥/私钥对签名不是新的**
JSON解析器在大多数编程语言中很常见,因为它们直接映射到对象。相反,XML没有自然的文档到对象映射。这使得使用JWT比使用SAML断言更容易。
关于使用情况,JWT用于互联网规模。这突出了在多个平台(尤其是移动平台)上客户端处理JSON Web令牌的便利性。 **不解释为什么它在互联网上使用(在我看来是因为无状态服务器**