0

0

了解 Web 身份验证:会话与 JWT

碧海醫心

碧海醫心

发布时间:2024-12-22 08:45:28

|

1149人浏览过

|

来源于dev.to

转载

构建安全的 web 应用程序时,选择正确的身份验证机制至关重要。今天,我们正在探索两种广泛使用的方法:基于会话的身份验证json web 令牌(jwt)。通过了解它们的工作流程、优势和权衡,您将能够决定哪一种最适合您的应用程序。


基于会话的身份验证

以下是基于会话的身份验证的工作原理:

  1. 登录和会话创建

    • 用户将登录凭据发送到服务器。
    • 服务器验证它们,如果有效,则创建一个会话。
    • 会话数据(例如,用户 ID、过期时间)存储在服务器上的数据库或缓存(如 Redis)中。
  2. 会话 ID

    • 服务器向客户端发送一个唯一的会话 ID,通常作为 cookie。
  3. 后续请求

    • 客户端会在每个请求中自动发送会话 ID cookie。
    • 服务器使用此 ID 来检索会话数据并对用户进行身份验证。

Session Authentication

主要优点

  • 轻松撤销:可以通过删除会话数据随时使会话失效。
  • 集中安全性:敏感信息保留在服务器上。

挑战

  • 分布式系统:在多服务器环境中,所有服务器都需要访问相同的会话数据,需要像Redis这样的集中式会话存储。
  • 增加了延迟:获取会话数据会增加每个请求的开销。

基于 JWT 的身份验证

JWT 采用不同的方法:

  1. 登录和令牌生成

    会译·对照式翻译
    会译·对照式翻译

    会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

    下载
    • 用户将登录凭据发送到服务器。
    • 服务器验证它们并生成包含用户数据的签名 JWT。
    • 客户端存储 JWT(例如,在本地存储或 cookie 中)。
  2. 后续请求

    • 客户端在请求标头中发送 JWT。
    • 服务器验证令牌的签名并使用其数据进行身份验证。

Token Authentication

主要优点

  • 无状态且可扩展:服务器上不存储会话数据,这使得 JWT 成为水平可扩展应用程序的理想选择。
  • 服务间兼容性:在微服务架构中,服务可以信任经过验证的 JWT 中的数据,而无需查询身份验证服务。

挑战

  • 令牌过期:如果被盗,JWT 在过期之前一直有效。
  • 安全权衡:服务器必须实现刷新令牌等机制来提高安全性。

JWT 安全:选择正确的签名算法

  • HMAC:对称密钥用于签名和验证。简单但需要共享密钥,这可能会带来风险。
  • RSA/ECDSA:非对称密钥确保私钥对令牌进行签名,而公钥对其进行验证,从而增强分布式系统的安全性。

何时使用每种方法

基于会话的身份验证

  • 当您需要立即撤销会话时的理想选择。
  • 适合具有集中式数据存储的应用程序。
  • 敏感数据保留在服务器上,增强安全性。

基于 JWT 的身份验证

  • 最适合无状态、可扩展的架构。
  • 在微服务或与第三方服务共享身份验证数据时很有用。
  • 将 JWT 与刷新令牌配对,以平衡安全性和用户体验。

最终,您的选择取决于应用程序的架构、扩展要求和安全需求。无论您使用会话还是 JWT,了解这些机制都可以确保安全、无缝的用户体验。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

327

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

234

2023.10.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

417

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6423

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

346

2023.11.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号