一、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实战の简介的更多相关文章

  1. 单点登录系统和CAS的简介

    ---恢复内容开始--- 什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以 ...

  2. CAS实战の遇到的问题

    1.客户端启动报错,报错信息如下: 严重: Exception starting filter CAS Single Sign Out Filter java.lang.IllegalArgument ...

  3. CAS实战のclient自定义过滤器

    我们在配置cas client肯定写过如下代码: <filter> <filter-name>CASFilter</filter-name> <filter- ...

  4. CAS实战の获取多用户信息

    先列出版本号: 服务端版本:cas server 4.0.0 客户端版本:cas client 3.3.3 cas server step1:先将primaryPrincipalResolver be ...

  5. CAS实战の自定义注销

    步骤一 在cas server端,设置/WebContent/WEB-INF/cas-servlet.xml: <bean id="logoutAction" class=& ...

  6. CAS实战の自定义登录

    由于每个版本的改动较大,所以先把版本号列出: 服务端版本:cas server 4.0.0 客户端版本:cas client 3.3.3 一.自定义登录页面 页面路径:/WebContent/WEB- ...

  7. Java实战——简介

    由于下学期要学习JavaEE所以打算将JavaSE的知识再重新学习一遍,打好基础的同时也希望自己有新的收获和更深刻的理解. 这次复习主要是参考廖雪峰老师的java教程,每学习完一章对其中一些要点进行总 ...

  8. 基于Spark的电影推荐系统(实战简介)

    写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...

  9. Elasticsearch核心技术与实战-简介

    讲师阮一鸣介绍ebay的Pronto团队在ebay内部管理上百个Elasticsearch集群,超过4000个数据节点.在生产环境上支持的服务有 订单搜索.商品推荐.日志管理.风险控制.IT运维.安全 ...

随机推荐

  1. docker registry2

    https://blog.csdn.net/mideagroup/article/details/52052618

  2. Ansible Playbook 循环

    Standard Loops 为了节省一些打字,重复的任务可以写成如下: - name: add several users user: name: "{{ item }}" st ...

  3. Fiddler命令行和HTTP断点调试

    fiddler设置断点: fiddler->rules->automatic Breakpoints->选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效. 有两个断点 ...

  4. pip批量更新安装的包

    ------------------pip批量更新库-------------------- 1)查看过期的库 pip list --outdated  更新单一的库: pip install --u ...

  5. 使用httplib打开链接

    [使用httplib打开链接] urllib打开网页时,不会自动跳转,而http会自动跳转,所以使用httplib去打开链接,以获取内容. 参考:https://docs.python.org/2.7 ...

  6. vs code 插件推荐

    通用插件 HTML Snippets 超级实用且初级的 H5代码片段以及提示 HTML CSS Support 让 html 标签上写class 智能提示当前项目所支持的样式新版已经支持scss文件检 ...

  7. HttpClient(一)

    package com.cmy.httpClient; import org.apache.commons.httpclient.HttpClient; import org.apache.commo ...

  8. FEATURE_MCT_READERDIRECT问题

    刚才查了一下,好像与一个叫CCID的驱动有关.你把FEATURE_MCT_READEDIRECT定义成0x08,再make一下试试.

  9. html 5 如何限制上传的文件类型 (uploadifive)

    可以直接设置input标签的accept属性来限制上传文件的类型 <input type="file" accept="application/msword&quo ...

  10. 深入浅出 JMS(二) - ActiveMQ 入门指南

    深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...