2021-10-24

2021SC@SDUSC



智能研究中心快递柜学习笔记4

cas sso.js实现单点登录

SSO Single Sign On即单点登录的意思,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。为了解决第一个问题,即实现各信息系统之间的全面整合,集团公司引进了企业信息门户(EIP),即将各种应用系统(诸如ERP、BPM、HR、OA、企业邮局等)、数据资源和互联网资源统一集到企业信息门户之下,根据每个用户使用特点和角色的不同,形成个性化的应用界面,并通过对事件和消息的处理、传输把用户有机地联系在一起。

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。具有以下特点:

①开源的企业级单点登录解决方案。

②CAS Server 为需要独立部署的 Web 应用—tomcat。

③CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

CAS认证原理

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作,即登录;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。以下是 CAS 最基本的协议过程:

SSO单点登录访问流程主要有以下步骤:

访问服务:SSO客户端发送请求访问应用系统提供的服务资源。

定向认证:SSO客户端会重定向用户请求到SSO服务器。

用户认证:用户身份认证。

发放票据:SSO服务器会产生一个随机的Service Ticket。

验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。

传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景。

证书(是服务器端和客户端安全通信的凭证)

cas-server与cas-client通讯安全完全基于https,需要ssl证书,jdk的keytool工具生成的证书用于开发也是够的,当然正式上线的证书需要使用第三方认证的证书;这里介绍下cas开发的准备工作:keytool生成证书。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准,所以服务器需要使用ssl证书。

组件components

1._util包:存放自定义函数 详细见代码注释

2.AvatarList:显示头像群并支持tip(如下图)

3.chart包:存放各种图表相关的组件,条形图柱形图折线图等等

4.countDown包:一个倒计时组件,该组件有3个属性,

target(时间/毫秒数)必填, format(function,该方法接收一个毫秒数的参数,用于格式化显示当前倒计时时间)非必填, onEnd倒计时结束触发函数 

5.dict包:数据字典专用

6.Ellipsis包:字符串截取组件,可以指定字符串的显示长度,并将全部内容显示到tip中

7.jeecg包:自定义了很多列表/表单中用到的组件

8.jeecgbiz包:定义了一些业务相关的组件,比如选择用户弹框,根据部门选择用户等等

9.layouts+page包:系统页面布局相关组件,比如登陆进去之后页面顶部显示什么,底部显示什么,菜单点击触发多个tab的布局等

10.menun包:菜单组件,一个折叠菜单一个正常显示的菜单

11.NumberInfo:数字信息显示组件 如下图

12.online包:该包下封装了online表单的相关组件,用于展示表单各种控件,验证表单等

13.setting包:该包下封装了首页风格切换等功能如下图

14.table包:一个二次封装的table组件,用于展示列表

15.tools包:Breadcrumb.vue:面包屑二次封装,支持路由跳转 DetailList.vue

FooterToolBar.vue:fixed定位的底部,通过是否定义内部控件的属性slot="extra"决定是左浮动或是右浮动 HeaderNotice.vue:首页通知

HeaderInfo.vue:上下文字布局

 

Logo.vue:首页左上侧的log图

 U

serMenu.vue:首页右上侧的内容 

16.trend包 趋势显示组件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值