统一登录门户系统

2024-06-19 10:48
文章标签 系统 登录 统一 门户

本文主要是介绍统一登录门户系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着等保2.0和密评工作的深入推进,各政企单位的应用系统建设会向着更安全、更标准方向发展。

为了推进整合信息共享,破除各系统之间的壁垒,首先要建设的就是统一登录门户系统。

常见的统一登录要求,还是基于一个统一的入口,由统一登录入口完成登录后,可以自由访问其他系统,而其他系统的用户登录应跳转到统一登录入口。

可能存在的问题:

1.用户系统如何建立,如何解决存量用户。

2.应符合等保要求和国密要求。

 

一种简单的统一登录系统,在主域名中设置cookie信息,保证在访问其他子域名时也带上cookie,通过cookie获得用户的身份信息。知识点如下:

1.基于cookie用户登录,cookie和session的关系

2.cookie的domain(域)信息

一、基础知识

1.1 cookie

cookie是http协议的产物,由server生成,通过http response发送给webbrowser,webbrowser存储在用户本地的文件,在下一次访问同一url时候,在http header中携带cookie一起发送到服务器端。cookie采用key-value的数据结果。

在OSI 网络模型中,会话层在第五层,我们熟悉的Http、FTP、SMTP是TCP/IP网络协议的应用层协议。

Http是一种无状态的连接协议,本身并没有提供会话协议。通过cookie方式,可以为http添加会话信息。

如何理解,Http是一种无状态的连接协议。当用户的一次访问请求结束后,后端服务器就无法知道下一次来访问的还是不是上次访问的用户。另一种情况,在一个NAT的网络中,有10个用户通过NAT方式访问网络,那么这10个用户的ip都是一样,10个用户访问Web服务器时,在服务端无法区分这10个用户。

当一个web系统,需要会话信息时,可以在用户登录时,在cookie中保存用户名。这样在下一次访问时,cookie信息会放在http header中,随着http请求发送到服务端,起到会话标识的作用。即同一个客户端发出的请求,每次发出的请求都会带有上一次访问时服务端设置的信息,这样服务端就可以根据之前存入 Cookie 的值来做相应的处理。

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cookie cookie = new Cookie("mcrwayfun",System.currentTimeMillis()+"");// 设置生命周期为MAX_VALUEcookie.setMaxAge(Integer.MAX_VALUE);resp.addCookie(cookie);}

1.2 cookie域

产生Cookie的服务器可以向set-Cookie响应首部添加一个Domain属性来控制哪些站点可以看到那个cookie,例如下面:

Set-Cookie: name="wang"; domain="m.zhuanzhuan.58.com"

如果用户访问的是m.zhuanzhuan.58.com那就会发送cookie: name="wang", 如果用户访问www.aaa.com(非zhuanzhuan.58.com)就不会发送这个Cookie。

cookie的路径 Path

Path属性可以为服务器特定文档指定Cookie,这个属性设置的url且带有这个前缀的url路径都是有效的。

例如:m.zhuanzhuan.58.com 和 m.zhaunzhuan.58.com/user/这两个url。 m.zhuanzhuan.58.com 设置cookie

Set-cookie: id="123432";domain="m.zhuanzhuan.58.com";

m.zhaunzhuan.58.com/user/ 设置cookie:

Set-cookie:user="wang", domain="m.zhuanzhuan.58.com"; path=/user/

但是访问其他路径m.zhuanzhuan.58.com/other/就会获得

cookie: id="123432"

如果访问m.zhuanzhuan.58.com/user/就会获得

  cookie: id="123432"cookie: user="wang"

二、cookie实现单点登录

正常情况下,同一个一级域名下的两个二级域名也不能交互使用Cookie,比如test1.mcrwayfun.com和test2.mcrwayfun.com,因为二者的域名不完全相同。如果想要mcrwayfun.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为.mcrwayfun.com,这样使用test1.mcrwayfun.com和test2.mcrwayfun.com就能访问同一个cookie。

在这种单点登录模型中,登录系统采用cookie保存登录信息,并设置cookie domain域为一级域名,在访问二级域名时,服务端也会获得用户的登录信息,实现了统一登录的功能。

三、session和cookie

cookie 缺点

  1. 每次请求都会携带全部的 Cookie 信息,容易造成不必要的带宽浪费。

  2. 每个浏览器对 Cookie 在同一个域名下的个数和每个 Cookie 的总大小(4kb)都有相应的限制。

  3. 数据存储在客户端,容易被拦截篡改,不安全。

  4. 客户端可以禁用 Cookie,导致功能失效。

  5. 难于管理,大型系统里每个应用都会有自己的 Cookie,加上以上的限制,容易出现数据被截取,导致数据丢失。

Session(PHP 后端为例,java是一样的)

  1. 服务端(默认设置)接受请求时,先查看 $_COOKIE 中是否存在 name 为 PHPSESSID 的键值对(value 为服务端生成的 SESSION_ID:bebfaf6c745c1a6e5f341baf2178113b)。

  2. 若不存在(第一次请求),将会自动生成 SESSION_ID,写入到 $_COOKIE 数组中(name 为 PHPSESSID, value 为 SESSION_ID),然后通过响应头返回给浏览器。

  3. 若存在(非第一次请求),则根据 value 值到设置的目录下获取相应的文件,反序列化并写入到 $_SESSION 数组供后续使用。

  4. 当服务端进行设置时,此$_SESSION 只会维持在内存中。当脚本执行结束时,将会自动把 $_SESSION 序列化后写入到 SESSION_ID 对应的文件中(创建或覆盖)。(脚本执行即http访问)

  5. 通过POST获取用户的用户名密码,当验证成功后,将用户身份信息保存在$_SESSION中,通过cookie和session实现用户登录。

优点

  1. 只将会话标识符放到 Cookie 里,减少带宽的传输。

  2. 可以存储大量的信息,基本没有空间上的限制。

  3. 数据存放在服务端,安全。

  4. 可以统一集中式管理。

联系

SESSION 为了识别会话,需要传输一个唯一的 SESSION_ID 到客户端。一般情况下,都是借助 Cookie 来传递,当然也可以通过其他方式进行传递。

Session 安全延伸

以上分析得出, Session 需要通过 SESSION_ID 来识别客户端,这就会导致一个安全隐患。当 SESSION_ID 落入第三者时,服务端将无法分辨出是否是合法的请求。SESSION_ID通常为一串随机值,除了防止泄露,还要防止通过暴力方式猜解出来。

一个简单的防御措施就是:每次请求时都生成一个新的 SESSION_ID 关联到对应的数据并将老的 SESSION_ID 删除。

百度BDUSS可以看做是一个session_id,HttpOnly属性保证javascript不能修改这个值。

四、全局Session

采用Redis替代中间件session存储,实现单点登录。

五、采用cookie实现统一登录架构

  1. 登录login页面,生成用户信息并保存,保存在持久化UserInfo_Server数据库或Redis中。
  2. 将用户信息的key,写入到cookie中,设置domain为顶级域名。
  3. 浏览其他页面,会携带cookie发布到后端server,server向UserInfo_Server查询用户认证信息,实现用户登录。
  4. 用户注销,任一个server都可以设置cookie的有效期为0,删除cookie,并调用UserInfo_Server接口修改数据库中的认证信息。
  5. key的生成要随机,UserInfo接口校验数字签名,保证信道加密cookie不能被窃取

 

 

参考:

  1. 这一次带你彻底了解Cookie https://www.cnblogs.com/zhuanzhuanfe/p/8010854.html 
  2. 深入理解Cookie https://www.jianshu.com/p/6fc9cea6daa2
  3. Cookie 和 Session https://segmentfault.com/a/1190000008928086
  4. SpringBootSecurity学习(09)网页版登录配置Session共享 https://segmentfault.com/a/1190000020544320

 

这篇关于统一登录门户系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074815

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识