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 ...
随机推荐
- 奶瓶beini系统
奶瓶(beini)这个系统,是一款基于 Tiny Core Linux 搭建的无线网络安全测试系统,当然由于它是用来安全测试的系统,因此在安全方面自然有着强大的功能.而且,这个系统非常简便易学,因此现 ...
- 错误代码: 1242 Subquery returns more than 1 row
1. 错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:SELECT t.id, DATE_FORMAT( t.statisTim ...
- freemarker报错之十一
1.错误描述 六月 03, 2014 11:00:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- Linux显示PCI设备
Linux显示PCI设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lspci -tv -[0000:00]-+-00.0 Advanced Micro ...
- 用.Net Core控制台模拟一个ASP.Net Core的管道模型
在我的上几篇文章中降到了asp.net core的管道模型,为了更清楚地理解asp.net core的管道,再网上学习了.Net Core控制台应用程序对其的模拟,以加深映像,同时,供大家学习参考. ...
- SpringMVC 框架系列之初识与入门实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1). MVC:Model-View-Control Contr ...
- Codeforces Round #446 (Div. 2)
Codeforces Round #446 (Div. 2) 总体:rating涨了好多,虽然有部分是靠和一些大佬(例如redbag和ShichengXiao)交流的--希望下次能自己做出来2333 ...
- [BZOJ2684][CEOI2004]锯木厂选址
BZOJ权限题! Description 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运 ...
- mysql5.6版本备份报错
MySQL5.6版本备份报错,密码不安全 [root@centos199 mysql]# mysqldump -uroot -ppassword cz-office > mysql38.sqlW ...
- 弹框modal, 获取id与绑定id
var span2 = '<span class="replaceBlue cursor" data-target="#myModalMember" da ...