Session 我是否需要使用JSON Web令牌的会话存储?为什么不只用饼干呢?

Session 我是否需要使用JSON Web令牌的会话存储?为什么不只用饼干呢?,session,authentication,ssl,cookies,jwt,Session,Authentication,Ssl,Cookies,Jwt,我仍然无法理解JWT的主要目的是什么。就我而言,唯一的目的是: 克服CSRF 并确保更好的移动支持,因为移动应用在某些情况下不支持cookies。 还有一种说法是,使用JWT,您不必担心服务器端的会话存储。这我不清楚。JWT如何完全取代服务器端的会话存储?这是否意味着我们将所有会话数据放入JWT,对其进行加密,并在每次响应时将其发送给客户端?但如果是这样,这是否意味着服务器发出的令牌将根据我们在会话中存储的数据而改变?据我所知,在服务器端没有会话存储的情况下,阻止我们以这种方式使用cookie的

我仍然无法理解JWT的主要目的是什么。就我而言,唯一的目的是:

克服CSRF 并确保更好的移动支持,因为移动应用在某些情况下不支持cookies。 还有一种说法是,使用JWT,您不必担心服务器端的会话存储。这我不清楚。JWT如何完全取代服务器端的会话存储?这是否意味着我们将所有会话数据放入JWT,对其进行加密,并在每次响应时将其发送给客户端?但如果是这样,这是否意味着服务器发出的令牌将根据我们在会话中存储的数据而改变?据我所知,在服务器端没有会话存储的情况下,阻止我们以这种方式使用cookie的唯一原因是cookie文件的大小限制——只有4kb

我们还需要使用SSL来防止会话劫持吗?
请告诉我我的理解是否正确,或者还有其他方面。

JWT本身只是独立的令牌,不提供CSRF保护。用于交付JWT的协议可以或应该提供防止CSRF的方法

JWT明显优于Cookie的一个方面是其跨域能力。您可以在此处阅读有关令牌和cookie之间比较的更多信息:

JWT可以是自包含的,因此它们在一个可验证的容器中拥有您所需的所有信息,使您能够使用它们,而无需存储它们或引用它们。但是,会话中可能需要更多的数据,因此通常避免会话存储本身并不是迁移到JWTs的原因


SSL是必需的,以确保防止令牌泄漏和会话劫持。

JWT本身只是自包含的令牌,不提供CSRF保护。用于交付JWT的协议可以或应该提供防止CSRF的方法

JWT明显优于Cookie的一个方面是其跨域能力。您可以在此处阅读有关令牌和cookie之间比较的更多信息:

JWT可以是自包含的,因此它们在一个可验证的容器中拥有您所需的所有信息,使您能够使用它们,而无需存储它们或引用它们。但是,会话中可能需要更多的数据,因此通常避免会话存储本身并不是迁移到JWTs的原因


SSL是防止令牌泄漏和会话劫持所必需的。

我认为关于JWT的传说太多了。为了理解它的本质,我们应该回到它最初的定义

根据其网站:

JSON Web令牌JWT是一个开放标准RFC 7519,它定义了 紧凑、独立的信息安全传输方式 在各方之间作为JSON对象。此信息可以进行验证和分析 受信任,因为它是数字签名的

所以本质上,JWT提供的只是一种传输数据的方式。不多也不少。由于涉及多方,格式必须标准化。一旦格式标准化,就可以制作图书馆来促进其采用

再次从网站:

什么时候应该使用JSON Web令牌

在某些情况下,JSON Web标记非常有用:

身份验证:

这是使用JWT的典型场景,一旦用户登录,每个后续请求都将包括JWT, 允许用户访问以下内容的路由、服务和资源: 允许使用该令牌。单点登录是一项广泛使用的功能 现在使用JWT,因为它的开销小,并且能够 易于在不同领域的系统之间使用

信息交流:

JSON Web令牌是在各方之间安全传输信息的好方法,因为它们可以 签名,例如使用公钥/私钥对,您可以确定 寄件人就是他们说的那个人。此外,作为 签名是使用报头和有效负载计算的,您还可以 确认内容没有更改

因此,身份验证只是JWT可能的用例之一。虽然这确实是JWT的一个典型用法

就身份验证而言,JWT可以用来取代会话+cookie方法,因为它可以节省服务器存储会话的内存。但好处有多大取决于用户数量和您的具体场景。如果只有几个客户端,并且没有跨域身份验证要求,我认为您不需要放弃旧的会话+cookie方法

最后但并非最不重要的一点是,会话不仅仅用于身份验证。这实际上是我的意思。鉴于JWT的大小限制,我不确定JWT是否可以为此目的替换会话。还有,身份验证恰好是会话的一个用例,因为这样的信息必须是特定于用户的。还有许多其他好的场景可以证明会话的合理性,例如购物车。

我认为 关于JWT的传说太多了。为了理解它的本质,我们应该回到它最初的定义

根据其网站:

JSON Web令牌JWT是一个开放标准RFC 7519,它定义了 紧凑、独立的信息安全传输方式 在各方之间作为JSON对象。此信息可以进行验证和分析 受信任,因为它是数字签名的

所以本质上,JWT提供的只是一种传输数据的方式。不多也不少。由于涉及多方,格式必须标准化。一旦格式标准化,就可以制作图书馆来促进其采用

再次从网站:

什么时候应该使用JSON Web令牌

在某些情况下,JSON Web标记非常有用:

身份验证:

这是使用JWT的典型场景,一旦用户登录,每个后续请求都将包括JWT, 允许用户访问以下内容的路由、服务和资源: 允许使用该令牌。单点登录是一项广泛使用的功能 现在使用JWT,因为它的开销小,并且能够 易于在不同领域的系统之间使用

信息交流:

JSON Web令牌是在各方之间安全传输信息的好方法,因为它们可以 签名,例如使用公钥/私钥对,您可以确定 寄件人就是他们说的那个人。此外,作为 签名是使用报头和有效负载计算的,您还可以 确认内容没有更改

因此,身份验证只是JWT可能的用例之一。虽然这确实是JWT的一个典型用法

就身份验证而言,JWT可以用来取代会话+cookie方法,因为它可以节省服务器存储会话的内存。但好处有多大取决于用户数量和您的具体场景。如果只有几个客户端,并且没有跨域身份验证要求,我认为您不需要放弃旧的会话+cookie方法

最后但并非最不重要的一点是,会话不仅仅用于身份验证。这实际上是我的意思。鉴于JWT的大小限制,我不确定JWT是否可以为此目的替换会话。还有,身份验证恰好是会话的一个用例,因为这样的信息必须是特定于用户的。还有许多其他好的场景可以证明会话的合理性,例如购物车