【发布时间】:2015-10-19 20:13:06
【问题描述】:
我一直在阅读使用令牌进行身份验证。但是,我无法理解令牌 (JWT) 与 cookie 有何不同。两者都将存储用户信息(作为令牌中的声明),定义持久性并将随每个客户端请求发送到服务器。
除了上述之外,我想到的几个问题 -
JWT 令牌是否不容易受到中间人攻击?如果有人窃取了令牌(在未加密的频道上),他们不能冒充原始用户吗? (除非我们在声明中添加用户的 IP 等)
我读过一些关于 cookie 不适合新时代移动应用程序的咆哮,而令牌就是答案。为什么?
为什么认为令牌比 cookie 更安全?是什么让他们更不容易受到攻击?
令牌是否只需要由服务器颁发,还是可以从另一个 OAuth 提供者接收令牌并自定义(添加/删除声明)并重用它?
在性能方面,cookie 是“糟糕的”,因为它们有大小限制,这就是为什么它们只将会话 ID(通常)与会话数据一起存储在服务器中。这会减少 cookie 的大小。但是 JWT,需要发送整个令牌,所以如果令牌包含会话数据作为声明,那么我们基本上每次都会发送这个不断增加的令牌。如果我猜对了,那么与 Cookie 相比,JWT 的性能不是很差吗?
谢谢
【问题讨论】:
-
第一个问题是将苹果与橙子进行比较。 Cookie 只是一种存储和传输机制。令牌可以存储在 cookie 中。
标签: authentication cookies session-cookies access-token jwt