web应用的认证与鉴权

简介: 认证解决的就是你是谁的问题,当登录一个web电商平台,当你很high的浏览商品的时候并不需要你的认证,但是当你准备下单的时候就需要你登录。要解决你是谁的问题?主要是你的账户有没有钱:)

什么是认证和授权?


认证解决的就是你是谁的问题,当登录一个web电商平台,当你很high的浏览商品的时候并不需要你的认证,但是当你准备下单的时候就需要你登录。要解决你是谁的问题?主要是你的账户有没有钱:)


当你登录之后,接下来最重要的是授权阶段,主要是区分你是不是VIP用户或admin用户。

970f0bb09ec4430b958524adccf5b0f0.png

什么是session?什么是cookie?


http是无状态的服务,当你首次登录web应用之后,http并不知道。如果服务器或者浏览器没记录下来的话,再次刷新页面可能就需要你重新登录。 这显然是不合理的。

因此session这个概念出现了。 这个是和用户紧密结合在一起的,主要解决服务器对用户的认证。

例如有的网站长时间不操作就需要重新登录,就是我们所说的session过期了,需要重新登录。


cookie是存在于用户浏览器本地。一般服务器将sessionid发送给浏览器将其保存在cookie中。

955eff06d349450fa8b6208e7e907ff4.png

什么是stick session?


当单体应用不足以支撑web应用的时候,一般会多实例部署前面加一个负载均衡器让多个服务实例提供服务。用户感觉不到自己在访问哪个服务器。

但是session同步是一个问题。

因为用户是通过负载均衡进来的,两次访问可能落在不同的svr上,如果第一次是在svr1上进行登录的,第二次是请求被分配到svr2上。如果再让用户重新登录那用户体验肯定糟糕透了。 用户莫名其妙间歇性登录。

因此出现了stick session即粘性session。 将session和用户访问的svr进行黏连。

5418a3c2099d475889c323d3f32a6e53.png

当用户量上来之后,stick session会对负载均衡和服务器造成很大的压力。因此一般大流量网站不使用这种方式保持session。

如何解决session同步的问题?


  • 第一种解决方案会话同步复制

也就是让这个会话数据在这个服务器之间进行同步复制。

可以解决问题但是它会引入复杂性,整个服务器集群之间,需要引入这个复杂的这个状态同步协议,整体性能和扩展性反而会变低。


  • 第二种无状态会话

不存在这个服务器上,而是存在客户端的这个浏览器里。

通过这个请求响应循环捎带来传递用户数据,这种方式确实可以做到这个服务器端和负载均衡器,都不需要存状态,比较容易扩展。

但是用户数据存在浏览器cookie当中是有泄露风险。

浏览器对这个cookie大小是有限制的,一般是4k


  • 第三种集中状态会话

将session集中存储redis中当,负载均衡器和这个服务器都可以水平扩展。提高了系统的可扩展性。

fb4f5c8c564d406ca515d0ad43cd0cc5.png

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
9天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
22 3
|
1天前
|
缓存 监控 前端开发
探索现代Web应用的性能优化实践
【5月更文挑战第10天】随着互联网技术的飞速发展,用户对Web应用的响应速度和流畅度要求越来越高。性能优化已成为前端开发中不可或缺的一环。本文将深入探讨Web应用性能优化的关键策略,包括代码分割、资源压缩、缓存利用、服务端渲染等技术手段,以及如何通过工具进行性能监测和分析。我们将从原理出发,结合实际案例,帮助开发者构建更快速、更高效的Web应用。
|
9天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
24 4
|
9天前
|
存储 前端开发 安全
13:会话跟踪技术Session的深度应用与实践-Java Web
13:会话跟踪技术Session的深度应用与实践-Java Web
23 3
|
9天前
|
存储 前端开发 搜索推荐
12:会话跟踪技术Cookie的深度应用与实践-Java Web
12:会话跟踪技术Cookie的深度应用与实践-Java Web
22 4
|
10天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
10天前
|
前端开发 JavaScript 搜索推荐
【专栏:HTML 与 CSS 前端技术趋势篇】HTML 与 CSS 在 Web 组件化中的应用
【4月更文挑战第30天】本文探讨了HTML和CSS在Web组件化中的应用及其在前端趋势中的重要性。组件化提高了代码复用、维护性和扩展性。HTML提供组件结构,语义化标签增进可读性,支持用户交互;CSS实现样式封装、布局控制和主题定制。案例展示了导航栏、卡片和模态框组件的创建。响应式设计、动态样式、CSS预处理器和Web组件标准等趋势影响HTML/CSS在组件化中的应用。面对兼容性、代码复杂度和性能优化挑战,需采取相应策略。未来,持续发掘HTML和CSS潜力,推动组件化开发创新,提升Web应用体验。
|
10天前
|
缓存 前端开发 JavaScript
探索现代Web应用的性能优化策略移动应用开发的未来之路:跨平台与原生之争
【4月更文挑战第30天】随着互联网技术的迅猛发展,Web应用已成为信息交流和商业活动的重要平台。用户对Web应用的响应速度和稳定性有着极高的期望,这促使开发者不断寻求提升应用性能的有效途径。本文将深入探讨针对现代Web应用进行性能优化的关键策略,包括前端优化、后端优化以及数据库层面的调优技巧,旨在为开发者提供一套全面的优化工具箱,帮助他们构建更快速、更高效的Web应用。
|
11天前
|
开发框架 JavaScript 前端开发
【JavaScript 与 TypeScript 技术专栏】TypeScript 在 Web 开发中的前沿应用
【4月更文挑战第30天】TypeScript在Web开发中日益重要,以其强大的类型系统提升代码质量,支持组件化开发,与React、Vue、Angular等框架良好集成。在大型项目管理中,TypeScript助于代码组织和优化,提高团队协作效率。此外,它提升开发体验,提供智能提示和错误检测。众多成功案例证明其前沿应用,未来将在Web开发领域持续发挥关键作用。
|
11天前
|
移动开发 JavaScript 前端开发
【JavaScript技术专栏】Web Worker在JavaScript中的应用
【4月更文挑战第30天】HTML5的Web Worker API解决了JavaScript单线程性能瓶颈问题,允许在后台线程运行JS代码。本文介绍了Web Worker的基本概念、类型、用法和应用场景,如复杂计算、图像处理和数据同步。通过实例展示了搜索建议、游戏开发和实时数据分析等应用,并提醒注意其无法直接访问DOM、需消息传递通信以及移动端资源管理。Web Worker为前端开发提供了多线程能力,提升了Web应用性能和用户体验。