CAS 单点登录服务端部署
侧边栏壁纸
  • 累计撰写 174 篇文章
  • 累计收到 1,068 条评论

CAS 单点登录服务端部署

萧瑟
2022-10-29 / 3 评论 / 90 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年10月30日,已超过542天没有更新,若内容或图片失效,请留言反馈。

CAS 介绍

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

特点

  1. 开源的企业级单点登录解决方案。
  2. CAS Server 为需要独立部署的 Web 应用。
  3. CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
  4. CAS属于Apache 2.0许可证,允许代码修改,再发布(作为开源或商业软件)。

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

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 官方网站上的相关文档。

CAS服务端部署

PS:本服务搭建为测试服务,所使用域名和配置均为内网,仅供参考,不代表实际环境,且未部署HTTPS,如测试环境中报错,请配置HTTPS,错误描述为:“未认证授权的服务”

环境要求

部署教程

1、将war包放入tomcat/webapps下,启动tomcat将会自动解压,启动成功后,我们将目录修改为cas-server;再次重启tomcat,访问:http://127.0.0.1:8080/cas-server/login

出现以上界面,则说明服务正常启动。默认账户和密码为:casuser/Mellon

2、登录MySQL数据库,创建用户表,用于对接CAS用户认证

-- 创建cas_user表
DROP TABLE IF EXISTS `cas_user`;
CREATE TABLE `cas_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) DEFAULT NULL,
  `password` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- 创建第一个用户 admin 默认密码123456 此处密码需使用MD5加密
insert  into `cas_user`(`id`,`username`,`password`) values (1,'admin','e10adc3949ba59abbe56e057f20f883e');

3、修改CAS服务端配置,配置自定义用户表,以及用户密码MD5加密

打开 tomcat/webapps/cas-server/WEB-INF/classes/application.properties 文件,将初始密码注释,并添加MySQL配置信息。此处一般为该文件末尾。

#CAS Authentication Credentials
#cas.authn.accept.users=casuser::Mellon
cas.authn.jdbc.query[0].url=jdbc:mysql://ip:3306/test_cas?serverTimezone=GMT
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].sql=select * from cas_user where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#MD5加密策略
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

4、将MySQL驱动Jar包放入:tomcat\webapps\cas\WEB-INF\lib 中,重启Tomcat服务,即可。

MySQL 驱动Jar包:下载地址

5、再次打开CAS登录页面,使用MySQL中配置的账号,即可登录系统。

本文参考:

https://github.com/apereo/cas-overlay-template

评论 (3)

取消
  1. 头像
    zeruns
    广东省佛山市 Windows 10 · Google Chrome

    强啊

    回复
  2. 头像
    XiaoShi
    广西壮族自治区桂林市 Windows 10 · Google Chrome

    感觉我们学校的cas不是很好表情

    回复
    1. 头像
      萧瑟 作者
      北京市 Windows 10 · Google Chrome
      @ XiaoShi

      联系学校网络中心换个厂商。表情

      回复