Ole*_*nko 1 authentication cookies ssl session jwt
我仍然无法理解JWT. 至于我,唯一的目的是:
CSRF还有一种说法是,JWT您不必担心服务器端的会话存储。这对我来说不清楚。如何JWT完全取代服务器端的会话存储?这是否意味着我们将所有会话数据放入JWT,加密并在每次响应时将其发送给客户端?但是如果是这样,这是否意味着服务器发出的令牌会根据我们用来存储在会话中的数据而改变?据我所知,阻止我们以这种方式使用 cookie(服务器端没有会话存储)的唯一原因是 cookie 文件的大小限制 - 仅限4kb.
另外我们还需要使用SSL来防止会话劫持吗?请告诉我我的理解是否正确,或者还有其他方面。
我认为关于 JWT 的传说太多了。要了解它的本质,我们应该回到它的原始定义。
根据其官方网站:
JSON Web Token (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为 JSON 对象安全地传输信息。该信息可以被验证和信任,因为它是经过数字签名的。
所以本质上,JWT 提供的只是a way to transmit data. 不多也不少。并且由于涉及多方,格式必须标准化。一旦格式标准化,就可以创建库以促进其采用。
再次来自官方网站:
什么时候应该使用 JSON 网络令牌?
在某些情况下,JSON Web Token 很有用:
验证:
这是使用 JWT 的典型场景,一旦用户登录,每个后续请求都将包含 JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用 JWT 的一个特性,因为它的开销很小,并且能够在不同域的系统之间轻松使用。
信息交流:
JSON Web Tokens 是在各方之间安全传输信息的好方法,因为它们可以被签名,例如使用公钥/私钥对,您可以确定发件人就是他们所说的那样。此外,由于使用标头和有效负载计算签名,因此您还可以验证内容是否未更改。
因此,身份验证只是JWT 的可能用例之一。虽然它确实是 JWT 的典型用法。
就认证而言,JWT 可以用来代替 session+cookie 的方式,因为它可以节省服务器用于存储 session 的内存。但是收益有多大取决于用户数量和您的具体场景。如果只有少数客户端并且没有跨域身份验证要求,我认为您不需要放弃旧的 session+cookie 方法。
最后但并非最不重要的一点是,Session 不仅仅用于身份验证。它实际上是为了将 HTTP 请求和响应放在更大的上下文中。鉴于 JWT 的大小限制,我不确定 JWT 是否可以为此目的替换会话。恕我直言,身份验证恰好是会话的用例之一,因为此类信息必须特定于用户。还有许多其他很好的场景可以证明会话的合理性,例如购物车。
| 归档时间: |
|
| 查看次数: |
2255 次 |
| 最近记录: |