jwt同一会话_使用会话Cookie与 JWT身份验证

jwt同一会话

HTTP是一种无状态协议,用于传输数据。 它启用了客户端和服务器端之间的通信。 它最初是为了在Web浏览器和Web服务器之间建立连接而建立的。

让我们借助示例了解这一点:

假设我们在网上购物,我们添加一些商品,例如。 耳机到我们的购物车。 然后,我们继续寻找其他物品,在此期间,我们希望在执行任何其他任务时存储购物车物品的状态且不丢失它们。 这意味着我们希望在整个购物过程中记住我们的状态。

由于HTTP是无状态协议,因此要克服此问题,我们可以使用会话或令牌。 该博客将帮助您了解用于用户身份验证的两种身份验证方法之间的区别。

因此,让我们深入了解基于会话(cookie)和基于令牌的身份验证的概念,并了解JSON Web令牌即JWT的结构。

基于会话的身份验证

在JSON Web令牌出现之前,我们主要使用这种身份验证。

在这种身份验证方法中,服务器负责身份验证,客户端不知道发送请求后服务器端会发生什么。

那么什么是会话Cookie?

上面创建的cookie是会话cookie :由于客户端未指定Expires或Max-Age指令,因此在客户端关闭时将其删除。 但是,Web浏览器可能会使用会话还原 ,这会使大多数会话Cookie保持永久状态,就像从未关闭过浏览器一样。

进一步了解HTTP Cookie

让我们了解用户在网络浏览器上登录任何网站时通常会发生什么。 例如,用户登录后,服务器将为该用户创建一个会话并将该会话数据存储在服务器内存中。

当用户在网站上执行某些活动时,会创建一个会话ID,该会话ID存储在客户端浏览器的cookie中。 在用户发出的每个请求中,cookie都会一起发送。

然后,当用户最初登录时,服务器可以使用存储在服务器内存中的会话数据验证cookie上的会话数据。 当用户从网站注销时,该会话数据将从数据库和服务器内存中删除。

基于令牌的身份验证

在基于令牌的身份验证中,我们使用JWT(JSON Web令牌)进行身份验证。 这是RESTful API的广泛使用的方法。

在此,当用户发送带有登录详细信息的用户身份验证请求时,服务器将以JSON Web令牌(JWT)的形式创建加密令牌,并将其发送回客户端。 当客户端收到令牌时,这意味着该用户已通过身份验证,可以使用客户端执行任何活动。

JWT通常存储在客户端的localStorage中,并且当用户从服务器请求任何数据或对该网站执行任何活动时,它将作为该用户的唯一密钥发送。 因此,当服务器接收到该请求时,它将针对每个请求验证JWT仅是该特定用户,然后将所需的响应发送回客户端。

这是标题与每个请求一起发送到服务器的方式:

headers: {"Authorization" : "Bearer ${JWT_TOKEN}"
}

用户状态存储在客户端的JWT中。 当用户注销时,令牌将从客户端(localStorage)中删除。 因此,大多数数据存储在客户端,并且可以直接访问,而不是向服务器发送请求。

JSON Web令牌由点(。)连接的三个部分组成:

  1. 标头
  2. 有效载荷
  3. 签名

JWT结构:

xxxxx.yyyyy.zzzzz

输出包含三个由点分隔的Base64-URL字符串,可以在HTML和HTTP环境中轻松传递这些字符串,与基于XML的标准(例如SAML)相比,它更紧凑。

JWT已对先前的标头和有效负载进行了编码,并用一个秘密进行了签名,如下图所示。

阅读有关JWT的更多信息

JWT的结构:

哪个更好用?

在现代Web应用程序中,JWT被广泛使用,因为它的伸缩性优于基于会话的cookie,因为令牌存储在客户端,而会话使用服务器内存来存储用户数据,这可能是一个问题。大量的用户一次访问该应用程序。 由于JWT随每个请求一起发送,并且包含所有用户信息,即使已对其进行编码,也有必要在JWT中使用必要的信息,并且应避免使用敏感信息或将其加密以防止安全攻击。

始终没有固定的方法可以使用,它取决于开发人员和要求的类型,以找出在哪种情况下需要使用哪种方法。 例如,OAuth使用特定的承载令牌和寿命更长的刷新令牌来获取承载令牌。 最好同时使用两种类型的混合物来创建灵活性和强大的应用程序。

我希望本文能使您对两种广泛使用的身份验证类型有一个很好的了解。

如有任何问题或建议,请发表评论。 :D

翻译自: https://hackernoon.com/using-session-cookies-vs-jwt-for-authentication-sd2v3vci

jwt同一会话

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值