首先,何谓单点登录。

单点登录(Single Sign On),简称为 SSO,是眼下比較流行的企业业务整合的解决方式之中的一个。

SSO的定义是在多个应用系统中,用户仅仅须要登录一次就能够訪问全部相互信任的应用系统。

cas登录系统中有两个角色,一个是cas server 就是提供登录服务,登录页面,client 校验的一个web应用。

一个是cas client,使用过滤器。在客户应用呗訪问的时候会先推断该系统是否登录,无登录则直接重定向到cas server服务上。

在CAS中MVC的控制主要是使用的spring MVC来实现的。可是。在登录过程中,由于有点类似于工作流的性质,所以。採用了一个轻量级的工作流框架。就是spring 的weflow。以下,我们就CAS怎样採用webflow控制登录流程进行分析。

想深入理解webflow工作原理的读者须要參考官方的webflow2.21版本号的reference。

---------------------------------cas client 的流程----------------------------------------

cas client 使用的是过滤器。

在每次浏览器訪问cas celient应用之时,会先走在web.xml中配置的casFilter。他们会推断该用户是否已经登录。

假设(用户已经登陆){

doFilter;

}

假设(用户未登录。而且请求的參数中并没有携带ticket參数){

那么,将把浏览器重定向与cas server 让其去登录。

}
假设(用户未登录,而且请求中携带了ticket參数){
那么。cas client 会在后台向 cas server 发送 一个server validate的请求。

去验证这个ticket的合法性。

假设(验证成功){
创建session。cookie 并觉得该客户是已经登录状态。
}
假设(验证失败){
吧浏览器重定向于 cas server 让浏览器去登录。
}
}
这就是cas 登录中,client的流程
而在cas登出中。已登录的全部cas client 会收到来自 cas server的一个loginoutRequest ,客户端会销毁session什么的来进行登出的操作。

从而完毕登出。


-------------------------------------cas server的登录流程------------------------------------
cas server 在接收到 casclient 重定向过来的login请求。会进行一系列的账号password验证工作。

假设(登录成功){
写cookie, 将浏览器携带过来的server參数。也就是cas client应用的地址拿到,存入map(为将来的登出做准备)。
将用户重定向给cas client , 并携带ticket參数。
}否则{
毫无疑问。。又一次登录吧。

}
ps:登录的操作仅仅会登录一次。
-------------------------------------cas server的验证流程------------------------------------
接收到cas client 发送过来的验证请求,并返回过去一段xml格式的结果。代表成功,或者失败。
ps:该操作每一个cas client 都会走一次。


-------------------------------------用户登录流程------------------------------------
至此,全部的流程都大概描写叙述完成。

那么实际登录流程是如何呢?
我常常笑说,这样的登录就是踢皮球的过程,用户会被cas server 以及cas client 各种踢来踢去。
用户(浏览器)訪问 http://client/clientapp
clientapp 发现用户未登录。所以重定向给了casserver。于是用户的浏览器上的url变成了
用户(浏览器)訪问http://casserver:8443/casserver?

server=http://client/clientapp

用户(浏览器)输入用户password点击提交
casserver验证结果。并将用户重定向给了server中定义的client并附送了一个ticket
用户(浏览器)訪问 http://client/clientapp?ticket=xxxxxxx
casclient检測到实用户未登录,并有ticket參数。

则在后台向casserver 发送了server validate请求。

casserver收到cas client 的验证请求。返回成功或者失败
casclient收到来自casserver的用户返回值。假设(成功){do filter}否则{将用户重定向到casserver 登录页面}

用户(浏览器)訪问http://client/clientappB
casclient检測到用户未登录,会重定向到casserver
casserver有已经登录的cookie參数。casserver会拿到ticket并重定向给casclient
用户(浏览器)訪问 http://client/clientappB?ticket=xxxxxxx
casclient检測到实用户未登录,并有ticket參数。则在后台向casserver 发送了server validate请求。
casserver收到cas client 的验证请求。返回成功或者失败
casclient收到来自casserver的用户返回值。假设(成功){do filter}否则{将用户重定向到casserver 登录页面}
可是对用户登录appB这个过程来说,仅仅是用户(浏览器)各种被重定向的过程。也就是说。对于用户来说是透明的。于是就此实现了单点登录过程。

用户(浏览器)訪问http://client/clientapp
casclient检測到用户已经登录。放行。


-------------------------------------用户登出流程------------------------------------
用户(浏览器) 訪问http://client/clientapp/loginout
casclient会检測到该请求,并发送一个loginout请求到casserver
casserver收到该请求。会迭代本文红色字体那行的map。并迭代取出全部的client的url地址。
casserver迭代请求该这些url地址,并附带一个requestCode。。。

忘记什么名字了。就是一个參数,表示是登出操作。

casclient接收到该參数,将session销毁,完毕登出操作
casclientB接收到该參数,将session销毁。完毕登出操作
用户(浏览器)被重定向到casserver 到登陆页面
至此,登出完成。

CAS 单点登录的更多相关文章

  1. SSO之CAS单点登录实例演示

    本文目录: 一.概述 二.演示环境 三.JDK安装配置 四.安全证书配置 五.部署CAS-Server相关的Tomcat 六.部署CAS-Client相关的Tomcat 七. 测试验证SSO 一.概述 ...

  2. cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused

    cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused 环境: ...

  3. CAS单点登录中文用户名乱码问题

    CAS单点登录中文用户名乱码问题,有两种情况 1. CAS server乱码 即在向server端提交用户名和密码时,发生了乱码,解决方法是: 打开WEB-INF/web.xml,在其它的Filter ...

  4. CAS单点登录系统整合——注册的问题

    最近一段时间在搞CAS单点登录系统,涉及到几个子系统的整合问题.对于注册,这里遇到了一个选择: 在子系统内完成注册,然后把信息同步到CAS系统: 在CAS系统中完成基本信息的注册,比如:用户名.邮箱. ...

  5. Asp.net Mvc4 使用Cas单点登录

    因项目需要,使用了耶鲁大学的Cas单点登录方案,在java中使用一直正常,但是在.Net中碰到了循环重定向的问题,反复测试后,总算解决了,最终的配置如下: <?xml version=" ...

  6. CAS单点登录之mysql数据库用户验证及常见问题

    前面已经介绍了CAS服务器的搭建,详情见:搭建CAS单点登录服务器.然而前面只是简单地介绍了服务器的搭建,其验证方式是原始的配置文件的方式,这显然不能满足日常的需求.下面介绍下通过mysql数据库认证 ...

  7. SSO之CAS单点登录详细搭建教程

    本教程是我个人编写,花费几个小时的时间,给需要学习的人员学习使用,希望能帮助到你们. [环境说明]:本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下: windows7 ...

  8. CAS单点登录配置[1]:准备工作

    关于CAS是什么这里就不在赘述,网友将它比喻成旅游景点的套票,买了一个套票就可以观看所有景点,不需要一个景点买一次票...我们重点介绍CAS单点登录的配置. 工具/原料 1.配置好JDK环境,否则不方 ...

  9. cas系列(一)--cas单点登录基本原理

    (这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 一.为什么要实现单点登录 随着信息化不断发展,企业的信息化过程是一 ...

  10. CAS单点登录(SSO)完整教程

    转:http://blog.csdn.net/frinder/article/details/7969925 CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的 ...

随机推荐

  1. kingso_module - Taocode

    kingso_module - Taocode 模块介绍 Merger 功能介绍 Merger的功能: 合并多台Searcher机器的部分查询结果,得到最终的完整查询结果 向Detail集群请求最终展 ...

  2. poj2947

    高斯消元法模版题,但套模版没用.. 先回顾一下线性代数的知识. 若要求解如下方程: 首先,其系数矩阵为 然后,其增广矩阵为: 然后若要求解这个方程,首先将第一行第一个元素化为1,即:第一行乘以1/3. ...

  3. 数论F - Strange Way to Express Integers(不互素的的中国剩余定理)

    F - Strange Way to Express Integers Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format: ...

  4. 转:携程App的网络性能优化实践

    http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...

  5. 怎样用HTML5 Canvas制作一个简单的游戏

    原文连接: How To Make A Simple HTML5 Canvas Game 自从我制作了一些HTML5游戏(例如Crypt Run)后,我收到了很多建议,要求我写一篇关于怎样利用HTML ...

  6. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

    多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...

  7. grunt 前端开发环境搭建

    1.找管理员开通gitlab权限 2.下载并安装git工具 3.下载并安装nodejs 4.安装cnpm 5.安装kulor-cli cnpm install -g kulor-cli cnpm in ...

  8. 总线接口与计算机通信(五)CAN总线

        CAN网络图示     CAN的特点      CAN协议具有以下特点.      (1) 多主控制  在总线空闲时,所有的单元都可开始发送消息(多主控制). 最先访问总线的单元可获得发送权( ...

  9. Hystrix 使用与分析

    转载请注明出处哈:http://hot66hot.iteye.com/admin/blogs/2155036 一:为什么需要Hystrix? 在大中型分布式系统中,通常系统很多依赖(HTTP,hess ...

  10. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...