单点登录(Single Sign On)是门户产品的一大特点,可以为企业用户提供统一的信息资源认证访问平台,通过实施单点登录功能,使各种用户只需一次登录就可以根据相关的规则去访问不同的应用系统,提高IT系统的易用性、安全性、稳定性;在此基础上进一步实现企业用户高速协同办公和企业知识管理。
SSO实现原理:
SSO通常都是应用于WEB系统中。基于Web的身份验证的实质无外乎就是有一个表单,表单里面让用户输入用户名称和密码,然后提交给验证的页面,通过身份验证后,通过Session来储存用户的一些信息,然后每次访问页面时,从session里面读这些信息,如果存在,则进入登录后的界面,否则,就认为没有登录。客户端要支持Cookie来存储sessionid,与服务器上创建的session来对应。
SSO都要有一个单一的登录点,由此登录点将创建的会话token传递给应用系统。SSO需要建立一个统一的认证,权限信息库。但现实中,有的系统无法使用外部的认证,授权信息库,所以就需要在应用系统和Portal Server之间进行认证,同时进行授权信息的数据同步。根据认证,授权实现的位置可以分为两种实现方式:
第一类是通过Agent的方式,即在后端为每个Web应用系统都安装一个Agent,由Agent来接管该系统的身份验证和访问控制,Portal中会存放自己的用户信息,以及这些用户与其他系统的用户对应信息。这些Agent能够通过配置,轻松的接管了后面的系统的身份验证和访问控制。
第二类是通过Proxy的方式,即具有一个Proxy Server,由它来接管对于后端系统的访问,提交请求和读取数据,然后再返回给Portal。同时Portal可以存放用户信息以及用户的对应关系。 Proxy Server会通过存储的用户对应关系和用户名和密码,自动完成后端系统的登录,然后就象一个浏览器一样,提取数据,返回数据给后端系统。这样的话后台系统不用做任何修改,身份认证和访问控制仍然由各个系统自己管理。
Jetspeed2.0中SSO的实现:
Jetspeed2.0中的SSO支持基本的认证方式,支持基于cookies和Form形式的认证。凭证信息的存储作为一个组件实现,使用Jetspeed2.0的安全模式存储凭证信息(即Portal中的用户凭证和其他系统的用户凭证是存放在一起,使用同样方式管理)。SSO功能包含三个方面:
1、SSO管理
管理SSO的凭证信息和建立Portal用户的对应关系。用admin登录,在“Jetspeed管理portlets”下有“SSO管理”,在这里有两个Portlet:j2-admin::SSOBrowserPortlet和j2- admin::SSODetailsPortlet。左侧的是站点信息管理,包括站点名称,站点URL,站点域,以及用户名和密码的参数名称。管理的是要访问站点的一些基本信息。右侧是管理此站点的用户与Portal用户的对应关系。远处的站点用户信息包括用户帐号和凭证,可以同Portal中的单个用户对应也可以同用户组对应。同一个站点下可以有多个对应关系。
2、SSO Provider服务
是Jetspeed服务框架的一部分,处理SSO站点和凭证信息的存储,并且提供了通过url来获得数据的接口(注,通过站点的链接/URL来获得内容,笔者一开始以为是通过站点名称)。站点信息都存放在SSOSite对象中,凭证信息都存放在 SSOContext对象中。
3、SSO Proxy Portlet
这个Portlet为门户与被认证的站点提供了一个代理。它的主要目的是在它访问在配置参数中定义的目标地址之前认证所有SSO用户帐号的凭证。因为用户事先并不知道可能选择哪个目标地址。这样登录提示将不会出现,因为一个SSO入口已经存在并且用户已经被许可。SSO Proxy保留客户端的cache以便认证只发生一次。
SSO应用:
在Jetspeed2.0中自带了一个简单的例子程序SSO IFrame Portlet。Portlet根据目标地址获得站点的凭证信息,组成URL字符串,使用IFrame形式提交访问目标站点。注意:IFrame由程序代码自动生成。高度不能为百分比,否则IE6无法显示。
SSOWebContentPortle是获取网页信息的Portlet,也使用了SSO。注意,需要将jetspeed/WEB-INF/lib/xerces-2.3.0.jar拷贝到demo/WEB-INF/lib目录下。
总结:
Jetspeed2.0中提供了站点信息和用户凭证的管理,建立了门户用户与其他应用系统用户的对应关系,并提供了获得这些数据的接口。使用Proxy Portlet可实现预登录。通过这些方法完成了简单的单点登录功能。但在实际应用中根据不同的系统需要做些二次开发工作。因为各系统的用户认证都是在各系统的认证授权模块完成的,Portal只是存储了用户凭证的对应关系,这样就存在了系统间凭证信息同步的问题。对此需要在实际应用中注意。
分享到:
相关推荐
WinForm开发框架源码 权限管理系统源码 功能描述:01.登录界面 02.系统配置 03.申请账户 04.即时通讯 05.发送消息 06.广播消息 07.软件频道 - 内部通讯录 08.软件频道 - 名片管理 09.软件频道 - 代码生成器 10.系统后台管理 - 用户审核 11.系统后台管理 - 用户管理 12.系统后台管理 - 组织机构管理 13.系统后台管理 - 角色管理 14.系统后台管理 - 员工管理 15.系统后台管理 - 岗位管理 16.系统后台管理 - 用户权限设置 17.系统后台管理 - 角色权限设置 18.系统后台管理 - 组织机构权限设置 19.系统后台管理 - 菜单权限项设置 20.系统后台管理 - 选项管理 21.系统后台管理 - 序号(流水号)管理 22.系统后台管理 - 系统日志 - 按用户访问情况 23.系统后台管理 - 系统日志 - 按用户查询 24.系统后台管理 - 系统日志 - 按菜单查询 25.系统后台管理 - 系统日志 - 按日期查询 26.系统后台管理 - 系统日志 - 系统异常情况记
超级常用的甘特图-项目管理.xlsx
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
.f2812.acid
沟通的人性之光——AI 难以取代的人际交流能力.pdf
# 基于Spring Boot和Redis的分布式数据访问系统 ## 项目简介 本项目是一个基于Spring Boot和Redis的分布式数据访问系统,旨在提供高效、可靠的数据库访问和缓存管理功能。系统通过集成Spring Boot框架和Redis数据库,实现了对数据库的读写操作、数据分片、缓存管理等功能,适用于需要高性能和高可用性的分布式应用场景。 ## 项目的主要特性和功能 1. 数据库访问对象(DAO)基类提供通用的数据库访问对象基类,简化数据库操作的配置和管理。支持只读模式和分片数据源的配置。 2. 数据源上下文持有者管理和切换数据库连接,适用于数据库分片的环境。 3. 动态数据源管理实现多数据库的动态管理,支持切换数据库连接。 4. 数据库访问接口(DAO)定义了与数据库交互的基本操作,如增删改查等。 5. 读写分离提供只读和可写的数据访问对象,确保读操作和写操作在不同的环境中进行。
cnpdf_down.php
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
简介这个资源是一个用Java实现的贪吃蛇小游戏,旨在帮助初学者和有经验的开发者学习和提升编程技能。项目基于Java Swing库开发,包含完整的源代码、资源文件和文档。通过本项目,学习者可以深入理解Java编程基础、面向对象设计、图形用户界面开发、事件处理机制和游戏逻辑开发等核心概念。该贪吃蛇项目经过严格测试,确保代码可以正常运行,并且已经通过了答辩评审,获得高分评价,证明了其质量和完成度。项目适合作为课程设计、毕业设计或自我提升的实践练习。通过分析与实践这个项目,用户可以加深对Java语言的理解,提高编程能力,并获得宝贵的软件开发经验。
AI智能聊天小程序开源版本,目前支持对接阿里通义千问、百度千帆文心一言、讯飞星火大模型. 基于ruoyi-vue-plus的java8版本,有一些优化改动,主要技术栈: 后端:springboot2.7.18、mybatisplus、mysql、redis web前端:vue2、element ui、markdown编辑器cherry-markdown 小程序:微信原生语法、vant ui组件
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
<项目介绍> - 在本次设计中,将运用到MATLAB平台来对语音信号进行处理及识别。通过ATLAB平台建立一个GUI界面,接着输入数字语音信号,对输入进行预处理及端点检测,提取特征参数(MFCC),形成参考模块。与参考模块进行DTW算法进行匹配,输出匹配后的识别结果。 所制作GUI界面,制作成一个九宫格界面,点击对应0-9十个数字,可以播放对应语音,并且显示路径,波形,和结果的文本输出。可以进行二次改造成,属于一串数字,如数字正确,则触发另一个界面GUI,实现发射端和接收端的对话 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -----
一阶倒立摆模型推理和matlab仿真
# 基于Arduino的汽车事故预警系统 ## 项目简介 本项目旨在设计一个基于Arduino的汽车事故预警系统,通过实时监测汽车的振动和加速度数据,预测可能的事故并发出警报。系统利用Arduino板、Esp8266模块、ADXL345加速度计等硬件设备,并通过手机或电脑应用程序接收警报信息。 ## 项目的主要特性和功能 1. 实时数据监测系统能够实时监测汽车的振动和加速度数据。 2. 数据传输通过Esp8266模块将数据传输到手机或电脑应用程序。 3. 警报通知应用程序接收警报信息,提醒驾驶员可能发生的事故。 4. 调试与分析提供串口监视器读数功能,方便调试和数据分析。 ## 安装使用步骤 1. 准备硬件确保所有硬件设备(如Arduino板、Esp8266模块、ADXL345加速度计等)已准备齐全。 2. 硬件连接按照说明书正确连接硬件设备,并配置Arduino IDE环境。 3. 上传代码下载并上传源代码文件到Arduino板。
# 基于Qt框架的兵棋进攻游戏系统 ## 项目简介 本项目是一个兵棋进攻游戏系统,通过图形界面展示兵棋对战的过程。玩家通过操作棋子,克服障碍和防守点,将棋子移动到进攻目标区。游戏具有随机生成棋子和障碍物的功能,以及实时更新游戏界面的能力。玩家可以通过鼠标点击和移动来操作棋子,游戏简单易懂,充满挑战性和趣味性。 ## 项目的主要特性和功能 1. 图形界面通过Qt框架实现图形界面,展示游戏棋盘、棋子、障碍物、防守点和目标区域。 2. 游戏逻辑实现兵棋进攻的游戏逻辑,包括棋子的移动、攻击、生命值管理,以及游戏的胜负判断。 3. 随机生成随机生成棋子和障碍物的位置,增加游戏的随机性和挑战性。 4. 实时更新实时更新游戏界面,包括棋子的位置、生命值、子弹的更新等。 5. 用户交互处理鼠标按下事件,实现棋子的选中、移动、生命值更新等操作。 6. 防守点机制设置防守点,棋子进入攻击范围时,防守点会进行射击。 7. 胜负判断判断游戏是否胜利或失败,并显示相应的提示信息。
2024116比亚迪张家口成焊新线RF01生产线项目PLC和HMI屏幕程序,SEW IPOS SEW_MoviDrive RFID读写 博途项目
正点原子lvgl开发资料
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值