基本身份验证是基于会话的身份验证,为什么更推荐使用Jwt?

问题描述 投票:0回答:1

我正在学习Java和Spring的基本身份验证和Jwt身份验证,我想问你基本身份验证是否是基于会话的身份验证?

[我知道,在基于会话的身份验证中,当客户端登录时,会在客户端浏览器上的cookie中存储一个sessionId,然后,当客户端发出另一个请求时,服务器会将sessionId与存储在内存中的数据进行比较。服务器。我也想问你如何将sessionId从客户端浏览器发送到服务器?它像令牌一样发送到标头中吗?

最后一个问题是服务器如何验证Jwt令牌?我知道在会话身份验证的情况下,将从客户端发送的sessionId与来自服务器内存的数据进行比较。但是,在Jwt身份验证的情况下会发生什么?令牌与标头一起发送,我知道服务器会对其进行验证,并且服务器内存中没有数据。那么服务器如何比较令牌?任何反馈将不胜感激!谢谢!

jwt basic-authentication bearer-token jwt-auth
1个回答
0
投票

如果基本认证是基于会话的认证?我知道在基于会话的身份验证中

那么你为什么问?

实际上是基本身份验证,意味着用户凭据(用户名和密码)在Authorization http标头中发送

Authorization: Basic base64(username:password)

服务器可能会也可能不会使用会话cookie。会话cookie可以与其他身份验证手段一起使用,甚至可以不进行任何身份验证

sessionId如何从客户端浏览器发送到服务器?

作为session cookie,会话cookie作为HTTP标头发送,浏览器将其视为会话持久性

最后一个问题是服务器如何验证Jwt令牌?

JWT token应该签名。请注意,令牌通常包含3个部分

header.body.signature

标头指定签名类型(非对称密钥或共享机密),并且签名经过身份验证(签名或hmac-ed)标头和内容。

所以-服务器必须验证发行者,有效期和签名。

因此,服务器(服务提供商)不需要预先知道客户端的身份。服务提供者需要知道发行者的(发行jwt令牌的认证服务)公共密钥或共享密钥。

在jwt验证之后,服务可以根据jwt令牌中的信息来假定调用者的身份。

为什么更推荐Jwt?

取决于用例。 (一切都有其优点和缺点)

我建议在分布式和/或微服务架构中使用jwt。该服务不需要访问凭据或对用户进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.