elv*_*vis 6 basic-authentication jwt bearer-token
我正在学习 Java 和 Spring 的基本身份验证和 Jwt 身份验证,我想问您基本身份验证是否是基于会话的身份验证?
我知道在基于会话的身份验证中,当客户端登录时,sessionId 存储在客户端浏览器上的 cookie 中,之后当客户端发出另一个请求时,服务器将 sessionId 与存储在服务器内存中的数据进行比较。另外我想问一下sessionId是如何从客户端浏览器发送到服务器的?它是像令牌一样在标头中发送还是如何发送?
最后一个问题是服务器如何验证 Jwt 令牌?我知道在会话身份验证的情况下,将从客户端发送的 sessionId 与服务器内存中的数据进行比较。但是如果使用 Jwt 身份验证会发生什么?令牌与标头一起发送,我知道服务器验证了它并且服务器内存中没有数据。那么服务器如何比较token呢?任何反馈将不胜感激!谢谢你!
基本身份验证是否是基于会话的身份验证?
我知道在基于会话的身份验证中
那么你为什么问呢?
实际上 - 基本身份验证意味着用户凭据(用户名和密码)在授权 http 标头中发送
Authorization: Basic base64(username:password)
Run Code Online (Sandbox Code Playgroud)
服务器可能会也可能不会使用会话 cookie。会话 cookie 可以与其他身份验证方式一起使用,甚至无需任何身份验证
sessionId是如何从客户端浏览器发送到服务器的?
作为会话 cookie会话 cookie 作为 http 标头发送,浏览器将其视为会话持久的
最后一个问题是服务器如何验证 Jwt 令牌?
应签署JWT 令牌。请注意,令牌通常由 3 个部分组成
header.body.signature
Run Code Online (Sandbox Code Playgroud)
标头指定签名类型(非对称密钥或共享秘密),并且签名是经过身份验证(签名或 hmac-ed)的标头和内容。
因此,服务器必须验证颁发者、过期时间和签名。
因此服务器(服务提供商)不需要预先知道客户端的身份。服务提供商需要知道颁发者(颁发 jwt 令牌的身份验证服务)公钥或共享密钥。
经过 jwt 验证后,服务可以根据 jwt 令牌中的信息假定调用者的身份。
为什么更推荐Jwt?
这取决于用例。(凡事都有优点和缺点)
我建议在分布式和/或微服务架构中使用 jwt。该服务不需要访问凭据或对用户进行身份验证。
在基本身份验证中,我们需要为每个请求发送用户名和密码。
在会话身份验证中,我们将在初始请求时发送用户名和密码。然后从服务器响应中我们获取存储在浏览器中的会话 ID,并将其用于请求。
在令牌身份验证中,我们将在初始请求时发送用户名和密码。然后从服务器响应中我们获取令牌并将其用于请求。
希望你明白了!
| 归档时间: |
|
| 查看次数: |
3913 次 |
| 最近记录: |