包含原理配置实现及简易demo CAS4.1单点登录实现

CAS单点登录-简介
CAS 简介
CAS () 是 Yale 大学发起的一个企业级的、开源的项目 , 旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO ) 。
SSO 简介
单点登录(Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一 ,  SSO 使得在多个应用系统中 , 用户只需要 登录一次 就可以访问所有相互信任的应用系统 。
CAS 的基本原理
从结构体系看 ,  CAS 包括两部分: CAS和 CAS。(服务端/客户端)
服务端CAS负责完成对用户的认证工作 , 需要独立部署 , CAS会处理用户名 / 密码等凭证()。
客户端CAS与受保护的客户端应用部署在一起 , 以方式保护受保护的资源 。CAS负责处理对客户端受保护资源的访问请求 , 需要对请求方进行身份认证时 , 重定向到 CAS进行认证 。(原则上 , 客户端应用不再接受任何的用户名密码等) 。
基于CAS的SSO访问流程步骤:
访问服务: CAS客户端发送请求访问应用系统提供的服务资源 。
定向认证: CAS客户端会重定向用户请求到 CAS服务器 。
用户认证: 用户在浏览器端输入用户验证信息 , CAS 服务端完成用户身份认证 。
发放票据: CAS 服务器会产生一个随机的。
验证票据: CAS 服务器验证票据的合法性 , 验证通过后 , 允许客户端访问服务 。
传输用户信息: CAS服务器验证票据通过后 , 传输用户认证结果信息给客户端 。
下面是 CAS 最基本的协议过程:
搭建CAS
首先下载cas- , 进入cas的git项目 , 选择版本 , 下载zip包并解压 。(要求至少为jdk8 ,  8+)
本demo中使用的cas 版本为4.1(maven版本) , 较高版本的(如5.3)在代码拉取后自带了脚本 , 可直接用于打包构建 。
(5.3之后的都是项目 , 5.3以之前都是maven 项目 , build.cmd为win版自动构建+运行的脚本 , sh为linux版)
下面说明不使用脚本的构建方式 。
使用idea打开项目后 , 在较新的版本中 , cas的很多配置都放在了cas.里 , 这个文件可以放在服务器的任何位置 , 但是需要修改er.xml这个配置文件的目标路径 , 以告诉cas系统cas.需要去哪个位置加载 。
下述截图标明了配置文件路径 , 右侧需对应修改cas.配置文件的存放路径 , demo中我将配置文件放置于E:\prop中 , 直接修改路径即可 。
点击将本项目打包 , 会生成一个上图路径中的war文件:cas.war 。该文件即打包好的cas 文件 , 将该war放入安装路径下的文件夹中 , 启动 , 便会同时部署web应用程序cas。
由于我的端口由8080修改为9527 , 当启动后 , 访问路径 :9527/cas/login  , 能见到cas登录页面时 , 说明本demo的cas服务端已安装部署成功 。此时可尝试输入测试账号及密码 , 测试是否能实现登录功能 。(静态账号 , 密码)
也可以自己修改账号密码 , 在t.xml文件内进行修改 , 如下图
至此 , CAS 的demo服务端搭建已完成 。
编写CAS
为验证单点登录的有效性 , 新建立两个项目 , 作为客户端2和客户端3 。分别完成以下代码编写 。当两个客户端及服务端1均启动时 , 若客户端2登录后 , 客户端3只需刷新页面即可同时处于已登录状态 。