网站安全认证系统的设计变迁

news/2024/5/9 23:20:26/文章来源:https://blog.csdn.net/u010233323/article/details/52015890

 阶段1:

     起步,注册用户很少,两台服务器,一台应用服务器,一台数据库服务器。

     用户登陆后在应用服务器记录用户 session (通常就是 tomcat session)。

     当用户请求受保护资源(网页)时,首先请求经过一个安全认证过滤器进行拦截,并调用认证模块进行检测用户是否登陆。

     认证模块的检测方式很简单,就是判断用户的登陆 session 是否保存在服务器内存中,过期的 session 会自动清除。

     其架构如下:(图1)


     阶段2:

     随着用户的增长,一台服务器已经不足以支撑时,我们开始扩展服务器,加入从1台应用服务器扩展到N(N<10)台。

     用户登陆时,通过前面 apache 的负载均衡可能随机平均访问任何一台 Tomcat。

     这时产生了一个问题,原来保存在一台应用服务器内存中的 session 数据,现在分散在不同服务器上。

     这时我们没法像上面简单的在内存中检测 session 了,为了不改动原先的程序方案,我们开始考虑 session 复制。

     还好 Tomcat 这样的应用服务器为 session 复制提供了直接支持,只需改动配置即可,而不用变动程序。

     其架构如下:(图2)

     阶段3:

     用户进一步增长,应用服务器集群进一步增长,当超过10台后,session 复制开始显示出明显的低效和性能问题。

     而且单台服务器维护的 session 数据量也达到了瓶颈,我们考虑用专用的缓存服务器来取代 session 复制方案。

     memcache 或 redis 这样的缓存产品被引入作为集中式的 session 存储区域,应用服务器分离了 session 后变成了

     无状态的服务,不再受到 session 复制所需的内存和网络限制,可以进一步扩展数量。

     其架构如下:(图3)

     阶段4:

     网站越来越受欢迎,用户越来越多,业务越做越广,于是开始对业务进行分类。

     应用部署上也开始按业务分类划分了不同的业务服务器集群。

     例如原本网站域名为 www.xxx.com,按业务划分集群后,我们采用子域名区分业务集群,例如 biz1.xxx.com, biz2.xxx.com。

     那么整个网站应用被划分成了各个不同的子业务系统,而所有子业务系统都需要认证授权,如何来做统一认证呢?

     这时,我们将安全认证服务也独立为一个子系统,部署在 auth.xxx.com 域名下。

     如果继续采用集中式的 session 管理,那么对每个业务子系统受保护资源的访问都需要验证 session 是否存在。

     业务子系统调用认证子系统检测用户认证信息,这样认证子系统的访问频次将很高,几乎等于全部业务子系统的 PV 总和。

     这时,认证系统的可用性将变得非常重要。

     其架构如下:(图4)

     阶段5:

     为了降低业务子系统对认证系统的高可用性依赖,我们决定放弃服务端的集中式 session 管理,而采用客户端 Cookie 方式。

     当用户访问业务子系统的受保护资源时,若未登陆,则跳转到认证系统(auth.xxx.com)去进行登陆。

     登陆后认证系统写一个加密 cookie 到用户的浏览器,并跳转到用户访问的业务系统页面,浏览器自动携带这个加密 cookie 发送给业务子系统。

     业务子系统解密该 cookie 提取来自认证系统的验证和授权信息,并进行后续的业务处理。

     这里,加密的 cookie 里存储了来自认证系统授权的访问凭证(ticket),业务子系统正确解密 cookie 后获取访问凭证,即可认为用户已经过认证系统授权访问。

     其架构如下:(图5)

     这个架构机制解决了业务子系统高度依赖认证系统可用性的问题,降低了认证系统的访问压力,但也有新的问题。

     这里比较明显的是,认证系统和业务子系统的互信是依赖于约定的共享密钥,密钥如何管理成为一个新的问题?

     认证系统加密 cookie 使用的密钥需要被业务子系统用来解密,如果密钥分散配置到各个业务子系统中则造成密钥分散容易泄露(降低安全性)。

     更重要的是一旦认证系统需要变更密钥则连带影响所有业务子系统,而且变更过程很难保持同步更新,导致业务子系统在更新密钥的过程中不可用的问题。

     为了提升这个架构的可用性,考虑在认证系统中包含一个密钥管理子系统,可以采用 Lease 机制来解决密钥的分布式同步和一致性问题。

     参见:Lease 机制在分布式系统中的应用

     阶段6:

     网站越做越大,后来开始并购了一些其他网站,比如 www.yyy.com。

     这时我们面临一个新问题了,需要整合多个域名下的用户统一认证。前述的 cookie 方案碰到了跨域问题。

     这里假设我们首先合并了多个站点的用户数据库,这里只需要解决基于 cookie 跨域的认证问题。

     这里提两种方式可选:

     1. 同步登录

     用户登录xxx.com同时登录yyy.com,具体做法是在 xxx.com 进行认证成功返回后携带相关的认证凭证。

     然后调用 yyy.com 的认证接口传递认证凭证,yyy.com 验证凭证后设置来自 yyy.com 的 cookie。    

     这样用户在任一站点访问受保护资源时,因为都包含了相应的 cookie 所以可以正常访问。

     流程如下:(图6)

     2. 延迟登录

     与同步方式不同的是,用户登录了xxx.com时并不会立刻去请求 yyy.com 设置 cookie。

     而是等到用户真正访问 yyy.com 受保护资源时,由 yyy.com 请求统一认证中心认证后再跳转回 yyy.com 设置 cookie。

     流程如下:(图7)

     两种方式仅仅是策略上的不同,从合理性上看后一种方式感觉更合理,因为毕竟用户访问了 xxx.com不代表一定要去 yyy.com。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_897485.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付宝沙箱环境的电脑网站支付和手机网站支付

先登录支付宝的沙箱环境登录 - 支付宝 我以前已经注册过支付宝沙箱的账号了&#xff0c;此处我就省略了...... 登录之后需要获取这几个参数&#xff0c; GATEWAY_URL&#xff0c;APP_ID&#xff0c;APP_PRIVATE_KEY&#xff0c;FORMAT&#xff0c;CHARSET&#xff0c;ALIPAY…

手机网站支付宝接入iframe无法唤醒支付宝app

如果在正常的form表单中唤醒不了支付宝app只能用网页进行支付请参考如下&#xff1a; 商家在网页中调用支付宝提供的网页支付接口调起支付宝客户端内的支付模块&#xff0c;商家网页会跳转到支付宝中完成支付&#xff0c;支付完后跳回到商家网页内&#xff0c;最后展示支付结果…

关于大型网站技术演进的思考(一)--存储的瓶颈(1)

前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训&#xff0c;两天12个小时信息量非常大&#xff0c;知识的广度和难度也非常大&#xff0c;培训完后我很难完整理出全部听到的知识&#xff0c;今天我换了个思路是回味这次培训&#xff0c;这个思路就是通…

Asp.net FMS 开发视频网站

昨天看到利用FMS&#xff08;Flash Media Server&#xff09;做在线视频录制的资料&#xff0c;地址&#xff1a;http://www.cincn.com/article.asp?id15&#xff0c;还有播放流式FLV文件的资料&#xff0c;地址&#xff1a;http://blogs.ugidotnet.org/kfra/archive/2006/10/…

CDN系统对网站的性能有极大的提升

CDN系统对网站的性能有极大的提升 打开一个网站 我们只是请求了一个页面。单个页面&#xff0c;实际上所有文件都是一个新的请求。以新浪为例一共发起了35个请求。 这35个请求中。只有一个动态内容。其它均为静态。这样服务器实际上被访问35次、 如果我们把这些静态资源做到CDN…

怎么在ESC服务器上发布一个网站

*注&#xff1a;本文采用的是jsp的网站 *物料准备&#xff1a;*一个有公网ip的服务器&#xff08;包含jdk环境&#xff09;&#xff0c;一个域名&#xff0c;一个能跑通的项目 *所用软件&#xff1a;*idea、Navicat 、宝塔面板 在本地运行项目&#xff0c;确认可以跑通&#…

如何快速搭建自己的博客网站?

拥有一台服务器 我们可以选择在虚拟机搭建服务器&#xff0c;也可以选择购买云服务器。如果想要让网站长时间保持运行状态&#xff0c;最好还是选择云服务器。以阿里云服务器为例&#xff0c;我们可以根据自己的需要&#xff0c;购买合适的服务器配置和时间&#xff08;这里我…

最新版chorme安装adblock方法解决无法从该网站添加应用、扩展程序和用户脚本

解决最新版chorme安装插件问题。无法从该网站添加应用、扩展程序和用户脚本 自从用了chorme浏览器后&#xff0c;界面干爽清净&#xff0c;浏览器启动速度超级快&#xff0c;就不想用360了&#xff0c;无奈没用广告屏蔽软件&#xff0c;想用chorme插件又必须翻墙。无奈国内又不…

关于网站设计中网页情景化设计的方法介绍(图)-新华站长网

在信息化时代的现在&#xff0c;网络在人们生活已经产生了巨大的影响力&#xff0c;网络也在逐渐改变着人们的生活和习惯。然而&#xff0c;在如今信息大爆炸的今天&#xff0c;面对海量的网络信息&#xff0c;怎样才能实现既能吸引用户眼球&#xff0c;又能快速准确地传达信息…

高并发高流量网站架构

转自&#xff1a; http://blog.csdn.net/smarttony/article/details/5874485 高并发高流量网站架构 Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网…

创建站点和项目文件

今天最大的收获就是学了创建站点&#xff08;虽然非常的菜鸟&#xff0c;现在才弄&#xff09;&#xff0c;发现自己想的太复杂了。站点的创建主要是为了让网页结构更清晰&#xff0c;防止链接的地址出错。 顺便复习了一下昨天学的内容&#xff0c;仅仅才一天就忘的差不多了&a…

cjbsxs-建立网站的全过程(…

原文地址&#xff1a;cjbsxs-建立网站的全过程&#xff08;免费空间型&#xff09;&#xff01; 作者&#xff1a;cjbsxs HOT&#xff01;快速拥有自己的网站&#xff01; 继之前的文章&#xff0c;感觉介绍不够详细。为此再出新章&#xff1a; 一个完整的网站包括&#xff1a;…

vscode 调试html页面无法访问此网站 localhost 拒绝了我们的连接请求

这种情况突然发生&#xff0c;找了半天解决办法&#xff0c;在vs运行是这样&#xff0c;在Hbulider就能顺利运行 后来解决了&#xff0c;因为项目文件夹里多了一个文件夹 看到这个.vscode了吗&#xff0c;直接删掉 再按f5运行就可以了 暂时还没去研究这个文件夹的作用&#x…

Thinkphp5个人技术博客网站源码

简介&#xff1a; 技术交流分享个人博客网站源码&#xff0c;TP5.0博客系统源码&#xff0c;带QQ一键登录,。 安装说明&#xff1a; 1、将程序上传到网站根目录。 2、导入数据库文件 boke.sql 3、application/database.php 文件&#xff0c; 将自己的mysql数据库信息配置好…

最新PHP搞笑文字表情包在线制作网站源码

介绍: PHP搞笑装逼文字表情在线制作网站源码。 使用说明&#xff1a; 上传源码到空间即可 修改导航在文件header.php 修改标题在文件config.php 下载方式: lanzou.com/iQMjA01zpv7a

2022随身助手API接口网站PHP源码

介绍: 随身助手API接口网站PHP源码&#xff0c;本次更新了271个可用接口&#xff0c;现在开源给大家。 下载方式: lanzou.com/iYfrG020clpg

最新杰奇小说网站程序2.3可用版+淡绿唯美模板

介绍: 杰奇小说2.3独家定制版淡绿唯美模板&#xff0c;支持无人自动采集&#xff0c;带关关采集器&#xff0c;全站程序打包。 源码介绍&#xff1a; 1.此套程序采用杰奇小说系统内核做的&#xff0c;带手机端&#xff0c;可以设置mianfei章节和shoufei章节&#xff0c;模板…

2022新超级蜘蛛池站群优化网站系统源码

介绍: 程序支持自动采集&#xff0c;高效化的优化利用PHP性能&#xff0c;使得运行流畅稳定&#xff0c;有内容无缓存刷新不变功能&#xff0c;节省硬盘&#xff0c;防止搜索引擎识别蜘蛛池。 可以自定义每个网站的风格&#xff0c;关键词、外链等。 安装教程&#xff1a;域…

数据分析、数据科学网站

1、数据分析网&#xff1a;https://www.afenxi.com/ 网站上有很多分析报告&#xff0c;深度进行分析&#xff0c;值得阅读学习&#xff01; 2、199IT中文互联网互联网数据咨询平台&#xff1a;http://www.199it.com/ 主要是研究报告&#xff0c;&#xff0c;涉及很多行业