CAS 之 Apereo CAS 简介(一)
CAS 之 Apereo CAS 简介(一)
Background(背景)
随着公司业务的不断扩展,后台接入子系统不断增多,那么我们将针对不同的平台进行拆分为各自对应的子系统,
权限是不变的,那么我们不能每个子系统都单独进行登录认证,不然管理人员进行切换系统时会疯掉。
那么,经过考察选用开源框架 Apereo CAS , 选定版本为 5.2.3。目前系统已在线,并已稳定。
接下来我会将系统进行脱敏整理出一套完善的基于微服务的CAS单点系统实施方案。
由于CAS是相对比较大的工程,所以建议使用者认真阅读官方文档进行调整。
Intro(介绍)
Central Authentication Service (CAS),通常称为CAS。 CAS是一种针对Web的企业多语言单点登录解决方案,并尝试成为您的身份验证和授权需求的综合平台。
下面是官方的一段简述:
CAS Enterprise Single Sign-On
- 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.
由以上可以看出, Central Authentication Service (CAS) 支持的功能广泛。
Architecture(架构)

System Components (系统组件)
CAS服务器和CAS客户端组成CAS系统架构的两个物理组件,它们通过各种协议进行通信。
CAS Server(CAS服务器)
CAS服务器是基于Spring框架构建的Java servlet,其主要职责是验证用户并通过发布和验证票证来授予对启用CAS的服务(通常称为CAS客户端)的访问权限。 当服务器在成功登录时向用户发出票证授予票证(TGT)时,将创建SSO会话。 根据用户的请求,通过使用TGT作为标记的浏览器重定向向服务发出服务票据(ST)。 ST随后通过反向信道通信在CAS服务器上进行验证。 CAS Protocol文档中详细描述了这些交互。
CAS Clients(CAS客户端)
术语“CAS客户”在其通用中有两个不同的含义。 CAS客户端是可以通过支持的协议与服务器进行通信的任何CAS支持的应用程序。 CAS客户端也是一个软件包,可以与各种软件平台和应用程序集成,以便通过某种身份验证协议(例如CAS,SAML,OAuth)与CAS服务器进行通信。 已经开发了支持多种软件平台和产品的CAS客户端。
Platforms: (软件平台)
- Apache httpd Server (mod_auth_cas module)
- Java (Java CAS Client)
- .NET (.NET CAS Client)
- PHP (phpCAS)
- Perl (PerlCAS)
- Python (pycas)
- Ruby (rubycas-client)
Applications:(平台)
- Canvas
- Atlassian Confluence
- Atlassian JIRA
- Drupal
- Liferay
- uPortal
- …
Supported Protocols (支持协议)
客户端通过几种支持的协议与服务器进行通信。 所有支持的协议在概念上都是相似的,但有些协议的特征或特征使得它们适用于特定的应用程序或用例。 例如,CAS协议支持委托(代理)认证,并且SAML协议支持属性发布和单一注销。
Supported protocols:
Software Components(软件组件)
根据三层子系统来描述CAS服务器是有帮助的:
- Web(Spring MVC / Spring Webflow)
- Ticketing
- Authentication
几乎所有的部署考虑和组件配置都涉及这三个子系统。 Web层是与包括CAS客户端在内的所有外部系统进行通信的端点。 Web层委托票务子系统为CAS客户端访问生成票证。 SSO会话以成功认证时颁发票证授予票证开始,因此票务子系统经常委托给认证子系统。
认证系统通常只在SSO会话开始时处理请求,尽管还有其他情况可以调用它(例如强制认证)。
Conclusions(结论)

由上图可以看出, Central Authentication Service (CAS) 在很多大公司内进行了很好的应用。
Recommendations(建议)
It is recommended to deploy CAS locally using the WAR Overlay method.
- 建议使用WAR Overlay方法在本地部署CAS。
- 建议明白几点
- 2.1 何种应用在何种情况下产生何种事物用于何种目的,白话一点就是要清楚
一种事物的生命周期及变换过程。 - 2.2 一种新的事物的产生必然有其缘由,
知其然知其所以然才能不断地成长。 - 2.3 一般情况下,相对完善的事物产生的同时,都会有与之对应的文档。那么学习的最好途径就是仔细阅读实践。
- 2.4 即使是官方推出的,对自身应用来讲也不一定是最好的,要根据实际情况进行对应的实践验证。
- 2.5 尽信书不如无书。
- 2.1 何种应用在何种情况下产生何种事物用于何种目的,白话一点就是要清楚
参考资料
原创声明
作者:随风浮云
出处:http://www.cnblogs.com/ljmatlight
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明。
文中有不妥或者错误的地方,欢迎勘误,如果你有更好的建议,可以给我留言讨论,共同进步。
互联网技术时效性较强,引用请慎重。
CAS 之 Apereo CAS 简介(一)的更多相关文章
- Apereo CAS - 1
1. download cas 4.2.2 from https://github.com/apereo/cas/releases 2. eclipse import cas 4.2.2 eclip ...
- CAS单点登录系统简介
一.cas简介 全名:Central Authentication Service特点: 1.开源的.多协议的 SSO 解决方案: Protocols : Custom Protocol . CAS ...
- CAS 5.x搭建常见问题系列(3).Failure to find org.apereo.cas:cas-server-support-pm-jdbc:jar:5.1.9
错误内容 cas overlay的pom.xml增加了cas-server-support-pm-jdbc.jary依赖后, 打包(mvn package)出现如下的报错 D:\casoverlay\ ...
- apereo cas 小记01--服务器搭建01
---恢复内容开始--- github repository: apereo/cas 一,获取项目 链接:https://github.com/apereo/cas-overlay-template ...
- Apereo CAS 4.1 反序列化命令执行漏洞
命令执行 java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/success&q ...
- Cas(01)——简介
Cas的全称是Centeral Authentication Service,是对单点登录SSO(Single Sign On)的一种实现.其由Cas Server和Cas Client两部分组成,C ...
- cas系列(一)--cas单点登录基本原理
(这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 一.为什么要实现单点登录 随着信息化不断发展,企业的信息化过程是一 ...
- Apereo CAS Server服务端搭建教程
不说废话了,直接看搭建过程吧. 首先到下载源码,https://github.com/apereo/cas-overlay-template/tree/4.2 附上地址,本次版本为4.2,下载源码后如 ...
- cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
随机推荐
- R︱Rstudio 1.0版本尝鲜(R notebook、下载链接、sparkR、代码时间测试profile)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 2016年11月1日,RStudio 1.0版 ...
- dojo省份地市级联之地市Dao接口类(四)
dojo省份地市级联之地市Dao接口类 CityDao.java: /** * 地市 */ package com.you.dao; import java.util.List; import com ...
- (二十八)monggodb和maven零散笔记
(1)maven导包的问题:当在pom.xml界面的Dependencies中点击add之后输入jar包查询条件后,如果确定条件没有输错,repo中也确实存在相关jar包,而并没有查处任何结果时,可以 ...
- CSS的继承性与优先级
一.CSS的继承性 在CSS中不可继承的属性:display.margin.padding.border.background.width.min-width.max-width.height.min ...
- meta的各种参数
<!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...
- ACM1008
题目:Haab日历和Tzolkin日历的转换. Maya一共有两种日历,第一种日历名为Haab,将一年分为365天,一共有19个月.其中前18个月,分别命名为pop.nozip.zotz.tzec.x ...
- C# MVC的一种高效分页的html方法
首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用: //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ...
- C#属性的使用--C#基础
1.属性的作用:保护字段,对字段取值与赋值进行限定 2.属性的使用: _name(属性名)public [对应字段类型] 属性名Name{ get{return _name;} set{_name=v ...
- [BZOJ1003] [ZJOI2006] 物流运输trans (最短路 & dp)
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...
- [BZOJ1008] [HNOI2008] 越狱 (数学)
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 In ...