1. 新版本CAS介绍(6..0-RC4)
  1. 简介

Central Authentication Service (CAS),通常称为CAS。 CAS是一种针对Web的企业多语言单点登录解决方案,并尝试成为您的身份验证和授权需求的综合平台。

下面是CAS(6.0.X)官方的一段简述:

  • Spring Webflow/Spring Boot Java server component.
  • 可拔插认证支持 (LDAP, Database, X.509, SPNEGO, JAAS, JWT, RADIUS, MongoDb, etc)
  • 多种协议支持 (CAS, SAML, WS-Federation, OAuth2, OpenID, OpenID Connect, REST)
  • 通过各种提供商支持多因素身份验证 (Duo Security, FIDO U2F, YubiKey, Google Authenticator, Microsoft Azure, Authy etc)
  • 支持外部提供者的委托认证,例如: ADFS, Facebook, Twitter, SAML2 IdPs, etc.
  • Built-in support for password management, notifications, terms of use and impersonation.
  • Support for attribute release including user consent.
  • 实时监控和跟踪应用程序行为,统计信息和日志。
  • 用特定的认证策略管理和注册客户端应用程序和服务。
  • 跨平台的客户端支持 (Java, .Net, PHP, Perl, Apache, etc).
  • Integrations with InCommon, Box, Office365, ServiceNow, Salesforce, Workday, WebAdvisor, Drupal, Blackboard, Moodle, Google Apps, etc.

相较于老版本CAS(4.1.7),新版本CAS增加了更丰富的功能支持。

以下将分别从CAS的构建、单点登录(登出)、高可用架构、密码管理、OAuth认证、服务管理、个性化登录界面、多因素认证等方面进行详细介绍。

  1. CAS服务构建

目前CAS官方发布的为源码,需要由个人进行构建生成war包。CAS服务可以通过两种方式进行构建:一种是通过CAS源码进行编译、打包;一种是通过官方提供的cas-overlay-template工程来构建war包。由于目前CAS的支持功能较多,针对不同需求需要添加不同的support包,建议采用官方建议的cas-overlay-template方式进行构建。旧版本CAS采用Maven进行管理,新版本已经采用了Gradle进行管理。因此,构建新版本的CAS时,需要添加Gradle的支持。本文档采用cas-overlay-template进行构建,此种构建方式的优势在于通过配置文件增添support包、制定CAS版本即可进行构建,无需自主下载CAS源码。

注意:

  • CAS新版本(6.0.x+)使用的是JDK11进行构建。因此,生产使用时也需要注意版权问题,可以考虑采用Open JDK 11代替。本例中使用的jdk版本为:openjdk version "11.0.2"。
  • 本例采用的数据库为MySQL5.7,在使用数据库配置连接数据库时,数据库连接方言需要使用如下配置:org.hibernate.dialect.MySQL57InnoDBDialect,否则可能出现报错。
    1. 工程构建
  1. CAS相关代码均可在https://github.com/apereo进行下载。CAS-Overlay-Template工程目前无release版本,可以直接下载master分支代码。

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

  1. 由于国内网络受限,因此在工程下载后,需要调整仓库地址,用以进行仓库构建。修改

cas-overlay-template-master/build.gradle文件,增加阿里云Maven仓库地址:

  1. 修改cas-overlay-template-master/gradle.properties文件,指定构建CAS服务的版本:
  1. 导入工程,本例中采用eclipse,因此需要安装gradle相关插件:
  1. 导入工程后,访问cas-overlay-template-master/src/main/resources/application.properties文件,修改CAS服务配置信息(若没有配置文件,可以自主创建或者先生成war包,再从war对应路径拷贝)。本例中主要配置,均在此文件中进行配置,也可以针对不同的配置拆分成不同的配置文件进行单独配置。
  1. 通过gradle tasks面板进行服务构建。若该页签无任务,可以尝试刷新。
  1. 构建完成的工程,将会生成在cas-overlay-template-master/build/libs路径下。
  1. 将此工程发布至Tomcat,即可通过web界面进行访问,http://ip:port/cas。
  1. 单点登录(登出)

单点登录、单点登出是CAS的核心功能,主要用于用户的认证。CAS默认提供从本地json获取用户认证数据,默认用户名及密码为casuser/Mellon。目前认证的方式支持LDAP、Database、X.509、SPNEGO、JAAS、JWT、RADIUS、MongoDb等多种方式。本例中,将采用MySQL数据库作为认证数据存储的方式。因此,需要创建数据库、数据库表,数据库表至少包含username、password或类似功能字段。用户表中password字段支持多种加密方式,包含:NONE、DEFAULT、STANDARD、BCRYPT、SCRYPT、PBKDF2、自定义(需要额外编码)等多种加密方式。本例采用DEFAULT MD5对password进行加密。

  1. 工作原理

CAS的认知支持多种协议,包含:CAS, SAML, WS-Federation, OAuth2, OpenID, OpenID Connect, REST等。默认采用的为CAS协议,目前CAS协议有1.0、2.0、3.0三个版本。本例将以最常用的CAS 2.0协议为基础进行原理的介绍。

以上为官方提供的单点登录时序图,分为以下三种场景:应用首次登录、应用再次登录、应用2首次登录。主要原理是通过url的重定向、cookie、session等功能来实现用户认证。

关于前后分离应用的单点登录,其认证方式与独立服务认证方式略有不同,需要通过validate来进行用户认证,调用过程参考下图:

关于单点登出,默认CAS服务也支持单点登出。在某一个应用登出后,会将CAS Server端的TGT删除,同时CAS Server会向对应TGT验证的其他应用发起logout请求。整理需要注意,CAS Server仅会发送logout请求,应用拦截到logout后,需要自己完善用户的logout逻辑,用以实现用户登出。其原理参考下图:

    1. 工程构建
  1. 使用MySQL作为认证数据源,需要在cas-overlay-template-master/build.gradle文件中增加以下配置信息,用以支持数据库认证。
  1. 修改cas-overlay-template-master/src/main/resources/application.properties文件中增加以下配置信息,用以支持数据库认证以及字段加密。

其中cas.authn.jdbc.query[0].sql属性用以配置通过用户名查询密码的sql,cas.authn.jdbc.query[0].fieldPassword属性用以指定密码字段。cas.authn.jdbc.query[0].passwordEncoder相关属性用以指定密码字段的加密方式。

  1. 通过gradle tasks面板构建并发布服务。访问CAS服务界面,可以通过MySQL数据库中保存的用户名和密码进行登录。
  1. 单点登录(登出)配置
  1. CAS的服务接入单点登录,具有权限限制,此处样例已经设置接入授权。关于接入授权将会在【服务管理】章节详细说明。目前仅确保tomcat发布路径webapps/cas/WEB-INF/classes/services/下,具有HTTPSandIMAPS-10000001.json此文件(若没有可以创建),文件内容如下:
  1. 通过配置CAS的客户端,能够实现应用服务的单点登录功能。主要配置属性包含应用服务自身登录、登出url,CAS服务的登录、登出rul。不同应用可能配置方式不同,参考样例如下:
  1. 单点登录样例
  1. APP1登录:
  1. APP1登录成功:
  1. APP2登录,直接进入登录界面:
    1. 单点登出样例
  1. 参考上例结束,APP1、APP2均已登录,直接进入APP1登录界面,选择登出:
  1. 在APP2已登录界面进行刷新:

CAS新版本(6.0-RC4)使用介绍(一)相关推荐

  1. H3CNE新版本V6.0与旧版本V5.1的区别

    H3CNE新版本V6.0与旧版本V5.1的区别 华×××司于09年3月份推出了自己的新版NE培训教材V6.0版本,考试代号为GB0-190,考试价格也由原来的340元上涨到了1000元.通过分数线为6 ...

  2. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向...

    [.net 面向对象程序设计深入](4)MVC 6 --谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  3. 在Windows 10上安装TensorFlow 2.2.0 RC4版

    文章目录 一.TensorFlow概述 二.安装TensorFlow 2.2.0 RC4 1.采用阿里镜像源升级pip 2.采用阿里镜像源安装TensorFlow 2.2.0 RC4 3.采用阿里镜像 ...

  4. Metasploit发布了新版本5.0.83

    Metasploit发布了新版本5.0.83 在该版本中,新增加了以下模块:大学霸IT达人  (1)dlink_dwl_2600_command_injection模块:用于DLINK DWL-260 ...

  5. TypeScript 3.0 新功能介绍(二)

    2019独角兽企业重金招聘Python工程师标准>>> 转载 TypeScript 3.0 新功能介绍(二) TypeScript 3.0 新功能介绍(二) New unknown ...

  6. 快嘉开发框架1.0和示例介绍及使用说明

    2019独角兽企业重金招聘Python工程师标准>>> 快嘉开发框架1.0和示例介绍 快嘉开发框架将一个标准的J2EE项目拆分为基础组件(Base).持久层组件(Persistenc ...

  7. 书评:JavaFX 2.0:示例介绍

    尽管Oracle在JavaOne 2010和JavaOne 2011上对JavaFX的更改使我从怀疑论者转变为对JavaFX的信奉者 ,但是JavaFX愿景的转变并非没有缺点 . 特别是,JavaFX ...

  8. 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 NX10.0 新功能介绍视频教程专辑 PLM之家NX10.0界面基础新功能--1 NX新界面增强.mp4 PLM之家NX10.0界面基础新功能--2 问题 ...

  9. redhat linux 安装ftp服务,RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器

    本文以RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器. 安装服务器程序 程序下载地址:,目前最新版本为2.0.3,源程序文件名为vsftpd-2.0.3.tar.gz. ...

最新文章

  1. 北大吴思教授:人脑视觉机制有望开启下一代深度神经网络
  2. open***在Windows客户端权限那些事
  3. [禅悟人生]拿得起放得下, 才是真幸福
  4. 如何利用 JConsole观察分析Java程序的运行,进行排错调优
  5. 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | 任务检查 | 任务执行 )
  6. codevs 2494 Vani和Cl2捉迷藏
  7. mysql bigint转string_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!...
  8. PaperNotes(7)-GANs模式坍塌/训练不稳定
  9. linux给文件加可执行权限
  10. 题目1452:搬寝室(dp题目)
  11. python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图
  12. zookeeper集群为什么是单数
  13. 通过IP判断登录地址
  14. 南邮算法分析与设计实验4 密码算法
  15. 欧姆龙OMRON PLC程序,威纶触摸屏螺丝机 配方程序。 用ST语言编写程序+威纶触摸屏程序
  16. 计算机一级最难考题,计算机一级试题
  17. 在Windows服务器安装禅道
  18. C# MessageBox 确定|取消
  19. MT6762 Android 8.1 移植acc+gyro二合一sensor之后,acc有数据,gyro没有数据的问题
  20. 怎样成为高级的学习者?2:解码

热门文章

  1. 小凯的疑惑(扩展欧几里得)
  2. netscape.javascript.JSException: Unknown source:Invalid argument.
  3. Skype 2.0.0.63 for Linux
  4. 从零开始的iOS开发:00 | Swift基础语法(上)
  5. 世界上哪个国家最友好?
  6. 上百个Android开源项目分享 .
  7. 小米12 Pro二手值多少钱
  8. 微博文摘——如何改善繁琐的运维工作
  9. MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组
  10. 百度云管家4.6.2 – 最后一个不限速的版本