CAS实战の简介
一、SSO简介
单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。IBM对SSO有一个形象的解释“单点登录、全网漫游”。
二、SSO体系角色:
1、 User (多个)
2、 Web 应用(多个)
3、 SSO 认证中心( 1 个 )
三、CAS实现原理和机制

- 首先,单点登录分为“服务端”和“客户端”。服务端就是单点登录服务器,而客户端通常是“函数库”或者“插件”。需要使用单点登录的应用程序,需要把客户端插件安装到自己的系统中,或者将客户端函数库包括在代码中。单点登录的客户端通常替换了原来应用程序的认证部分的代码。
- 某个应用程序首先要发起第1次认证。大部分情况下,应用程序中嵌入的客户端会把应用程序原来的登录画面屏蔽掉,而直接转到单点登录服务器的登录页面。
- 用户在单点登录服务器的登录页面中,输入用户名和密码。
- 然后单点登录服务器会对用户名和密码进行认证。认证本身并不是单点登录服务器的功能,因此,通常会引入某种认证机制。认证机制可以有很多种,例如自己写一个认证程序,或者使用一些标准的认证方法,例如LDAP或者数据库等等。在大多数情况下,会使用LDAP进行认证。
- 认证通过之后,单点登录服务器会和应用程序进行一个比较复杂的交互,这通常是某种授权机制。CAS使用的是所谓的Ticket。
- 授权完成后,CAS把页面重定向,回到Web应用。Web应用此时就完成了成功的登录(当然这也是单点登录的客户端,根据返回的Ticket信息进行判断成功的)。
- 然后单点登录服务器会在客户端创建一个Cookie。注意,是在用户的客户端,而不是服务端创建一个Cookie。这个Cookie是一个加密的Cookie,其中保存了用户登录的信息。
- 如果用户此时希望进入其他Web应用程序,则安装在这些应用程序中的单点登录客户端,首先仍然会重定向到CAS服务器。不过此时CAS服务器不再要求用户输入用户名和密码,而是首先自动寻找Cookie,根据Cookie中保存的信息,进行登录。登录之后,CAS重定向回到用户的应用程序。
这样,就不再需要用户继续输入用户名和密码,从而实现了单点登录。
注意,这种单点登录体系中,并没有通过http进行密码的传递(但是有用户名的传递),因此是十分安全的。
四、项目实战
1、公司业务系统架构图:

2、具体实现流程图:

实现步骤:
用户访问业务系统(客户端,如图中systemA),先检查过滤器(有些请求路径是httpclient接口,必须过滤掉),然后判断客户端是否存在service ticket(票据),如果存在,则跳转回到客户端,如果不存在,则重定向到cas server(认证中心)进行认证,认证成功后,cas server生成一个service ticket并缓存下来,与此同时service ticket被存与cookie中种在客户端浏览器中,以备下次客户端访问识别。
3、登录流程图:

先读取DB账户信息,如成功,则直接进入客户端A;如失败,再读取AD域中用户信息,如成功,则将账户信息同步到DB;如失败,则弹出失败提示。
4、同步
当时业务设计的是,客户端拥有自身的用户信息表(由于权限的需要),所以新增了一份工作--将AD域中的账户信息同步到cas server 账户信息表,再同步到cas clinet账户信息表。
(1) cas server同步AD域账户数据
频率:一天一次
Step1: 先查询出AD域下所有账户,再查询出cas server下的所有账户;
Step2: AD域下所有账户与cas server下的所有账户匹配;
Step3: AD域下有的账户,cas server下不存在,则对cas server进行账户添加;AD域下没有的账户,cas server下存在,则对cas server进行账户删除;AD域下有的账户,cas server也存在,则不做处理。
Tips:以userName,isDelete作为联合主键
(2)cas client同步cas server账户数据
频率:一天一次
Step1: 先查询出cas client下所有账户,再查询出cas server下的所有账户;
Step2: cas client下所有账户与cas server下的所有账户匹配;
Step3: cas client下有的账户,cas server下不存在,则对cas client进行账户删除;cas client下没有的账户,cas server下存在,则对cas client进行账户添加;cas client下有的账户,cas server也存在,则不做处理。
Tips:以userName,userRealName,isDelete作为联合主键
CAS实战の简介的更多相关文章
- 单点登录系统和CAS的简介
---恢复内容开始--- 什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以 ...
- CAS实战の遇到的问题
1.客户端启动报错,报错信息如下: 严重: Exception starting filter CAS Single Sign Out Filter java.lang.IllegalArgument ...
- CAS实战のclient自定义过滤器
我们在配置cas client肯定写过如下代码: <filter> <filter-name>CASFilter</filter-name> <filter- ...
- CAS实战の获取多用户信息
先列出版本号: 服务端版本:cas server 4.0.0 客户端版本:cas client 3.3.3 cas server step1:先将primaryPrincipalResolver be ...
- CAS实战の自定义注销
步骤一 在cas server端,设置/WebContent/WEB-INF/cas-servlet.xml: <bean id="logoutAction" class=& ...
- CAS实战の自定义登录
由于每个版本的改动较大,所以先把版本号列出: 服务端版本:cas server 4.0.0 客户端版本:cas client 3.3.3 一.自定义登录页面 页面路径:/WebContent/WEB- ...
- Java实战——简介
由于下学期要学习JavaEE所以打算将JavaSE的知识再重新学习一遍,打好基础的同时也希望自己有新的收获和更深刻的理解. 这次复习主要是参考廖雪峰老师的java教程,每学习完一章对其中一些要点进行总 ...
- 基于Spark的电影推荐系统(实战简介)
写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...
- Elasticsearch核心技术与实战-简介
讲师阮一鸣介绍ebay的Pronto团队在ebay内部管理上百个Elasticsearch集群,超过4000个数据节点.在生产环境上支持的服务有 订单搜索.商品推荐.日志管理.风险控制.IT运维.安全 ...
随机推荐
- chnagyong sql
select gid,count(distinct mid) from members group by gid mysql> SELECT IFNULL(NULL,); mysql> 1 ...
- 结对项目3-bug的三种状态
这周和小伙伴结对构造程序,来深刻理解软件测试中,bug发现的三种状态. 1:不能触发Fault 2:触发Fault,但是不能触发Error 3:触发Error,但是不能产生Failure 我们完成的代 ...
- client / server端用户的登录
# 客户端 import socket import hashlib import json import os import struct sk = socket.socket() # 实例化 sk ...
- 利用python实现冒泡排序
1.先生存一个随机数组成的list 2.然后进行排序,把大的元素放在后面,小的元素放在前面,最终实现从小到大排列 首先生存一个随机数组成的list import random # print(sys. ...
- linq to sql之like
contains——like '%提交%' StartsWith—— like '条件%' EndWith——like '%条件'
- Codeforces 611C. New Year and Domino 动态规划
C. New Year and Domino time limit per test 3 seconds memory limit per test 256 megabytes input stand ...
- Laravel 中使用原生的 PHPExcel
1.安装 composer require maatwebsite/excel 之后,程序中就可以使用 PHPExcel 了 2.控制器中 public function export(Request ...
- 类方法 isAssignableFrom、instanceof 和 asSubclass
类方法 isAssignableFrom.instanceof 和 asSubclass Spring 框架 CollectionFactory 的 asEnumType 方法使用 "类.a ...
- OSGi 系列(七)之服务的监听、跟踪、声明等
OSGi 系列(七)之服务的监听.跟踪.声明等 1. OSGi 服务的事件监听 和 bundle 的事件监听类似,服务的事件监听是在服务注册.注销,属性被修改的时候,OSGi 框架会发出各种不同的事件 ...
- 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)
传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...