CAS

最近在整理单点登陆解决方案,整理一下。

CAS 介绍

CAS是用于Web的企业多语言单点登录解决方案,它试图成为满足身份验证和授权需求的综合平台。 通俗来说,CAS是可以用来整合多套系统,并且完成统一用户身份认证。 在官方文档的介绍中,CAS包含下面的特点与技术

  • Spring Webflow / Spring Boot Java服务器组件

  • 插件式地身份验证支持(LDAP, Database, X.509, SPNEGO, JAAS, JWT, RADIUS, MongoDb,等等)

  • 支持多种协议(CAS, SAML, WS-Federation, OAuth2, OpenID, OpenID Connect, REST)

  • 支持多种服务提供方地多种因素身份验证(Duo Security, FIDO U2F, YubiKey, Google - Authenticator, Authy, Acceptto, 等)

  • 支持委托给外部提供商地身份验证,如ADFS, Facebook, Twitter, SAML2 IdPs。

  • 内置对密码管理,通知,使用条款和模拟的支持。

  • 实时监控,与应用程序行为跟踪,统计信息与日志记录。

  • 使用特定地身份验证策略管理和注册客户端应用与服务。

  • 跨平台客户端支持Java, .Net, PHP, Perl, Apache。

  • 与InCommon,Box,Office365,ServiceNow,Salesforce,Workday,WebAdvisor,Drupal,- Blackboard,Moodle,Google Apps等集成。

CAS 架构

CAS 的架构图如下所示。

CAS Server

CAS 服务器是基于Spring 框架构建的 Java servlet 应用程序。主要职责是通过发行ticket来验证用户,并授予用户那些已经启用了CAS的服务的访问权限。当服务器在登录成功后向用户颁发ticket-granting ticket (TGT)时,将会建立一个SSO会话。应用户的请求,使用TGT作为令牌,通过浏览器重定向将service ticket (ST)发送给服务。随后,通过反向通道通信在CAS服务器上验证ST。

CAS Client

CAS Client 通常包含两种不同的含义。

CAS客户端可以是通过支持的协议与服务器通信的任何启用CAS的应用程序。

CAS客户端也可以是一个软件包,可以与各种软件平台和应用程序集成在一起,以便通过某种身份验证协议(例如CAS,SAML,OAuth)与CAS服务器进行通信。

CAS Client 支持下面的平台与应用。 平台

  • Apache httpd Server (mod_auth_cas module)

  • Java (Java CAS Client)

  • .NET (.NET CAS Client)

  • PHP (phpCAS)

  • Perl (PerlCAS)

  • Python (pycas)

  • Ruby (rubycas-client)

    应用

  • Outlook Web Application (ClearPass + .NET CAS Client)

  • Atlassian Confluence

  • Atlassian JIRA

  • Drupal

  • Liferay

  • uPortal

CAS Client

客户端通过几种支持的协议与服务端进行通信。所有支持的协议在概念上是相近的。但是一些协议的特点使得他们适合在特定场景中应用。例如CAS协议支持委托(代理)认证,SAML协议支持属性释放和单点退出。

  • CAS (versions 1, 2, and 3)

  • SAML 1.1

  • OpenID

  • OAuth (1.0, 2.0)

实验环境架构

  • CAS 6.4.0

  • CAS Service Management 6.3.0

  • Gitlab CE 13.8.2

  • OpenLDAP

  • openldap-2.4.44-20.el7.x86_64

  • tomcat 9.0.

  • JDK 11.0

通过将 官方网站的图 简单的修改,我们构建出实验环境架构如下图所示。

Last updated