CAS简介
CAS 是Central Authentication Service的简称,俗称中央认证服务器,是由
apereo
开发并管理的一套开源的SSO
又称单点登录框架。
CAS提供的功能
- 支持Spring Webflow / Spring Boot Java服务器组件
- 可插拔的认证支持(LDAP,Database,X.509,SPNEGO,JAAS,JWT,RADIUS,MongoDb等)
- 支持多种协议(CAS,SAML,WS-Federation,OAuth2.0,OpenID,Connect,REST)
- 通过各种提供商支持多因素身份验证(Duo Security, FIDO U2F, YubiKey, Google Authenticator, Microsoft Azure, Authy etc)
- 支持对外部提供程序的委派身份验证(ADFS,Facebook,Twitter,SAML2ldPs等)
- 内置支持密码管理,通知,使用条款和模拟
- 支持属性释放,包括用户同意
- 实时监控和跟踪应用程序行为,统计信息和日志
- 使用特定的身份验证策略管理和注册客户端应用程序
- 跨平台支持(Java, .Net, PHP, Perl, Apache, etc)
- 与InCommon,Box,Office365,ServiceNow,Salesforce,Workday,WebAdvisor,Drupal,Blackboard,Moodle,Google Apps的集成
应用场景
- 用户权限集中管理
- 分布式多系统用户集中管理
- 多终端认证(例如PC,手机端登录)
- 多因素身份验证(例如:QQ,微信,GitHub,Google Authenticator)
CAS认证习体系图
CAS拥有一个客户端与服务端,客户端与服务端支持多种协议的通信。
CAS Server
CAS Server是一个基于Spring Framework 构建的Servlet,其主要职责是通过颁发和验证票证来验证用户并授予对启用CAS的服务(通常称为CAS客户端)的访问权限。当服务器在成功登录后向用户发出票证授予票证(TGT)时,将创建SSO会话。使用TGT作为令牌,通过浏览器重定向,根据用户的请求向服务发出服务票据(ST)。随后通过反向信道通信在CAS服务器上验证ST。
CAS Client
CAS Client可以是任何启用CAS的应用程序,可以通过支持的协议与服务器通信,CAS客户端也是一个软件包,可以与各种软件平台和应用程序集成,以便通过一些身份验证协议(CAS, SAML, OAuth)与CAS服务器通信
支持的协议
客户端与服务端支持多种协议的建立,所有支持的协议在概念上类似,只是各自拥有一些特性使得它们适用于特定的场景。例如:CAS是支持委托(proxy)认证,SAML协议支持属性释放与单点登出
系统分层架构
- Web
- Ticketing
- Authentication
大多数应用都包含这三个组件。Web端提供与客户端的交互,Web委托ticketing 创建票据用于客户端的访问,SSO会话开始于验证成功后的Ticketing授予票证,因此票务子系统经常委托给验证子系统
认证流程图
基于JWT的认证: