CAS Architecture

翻译自:CAS 官网

介绍

CAS

CAS 是Yale(耶鲁)大学的一个开源的企业级单点登录系统,它的特点:

  • Java (Spring Webflow/Spring Boot) 服务组件
  • 可插拔身份验证支持(LDAP,Database,X.509,MFA)
  • 支持多种协议(CAS,SAML,OAuth,OpenID,OIDC)
  • 跨平台客户端支持(Java,.Net,PHP,Perl,Apache等)
  • 与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成

CAS提供了一个友好的开源社区,方便开发者积极支持和贡献项目。

知识扩展

SSO

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

业务流程

当用户第一次访问应用系统A的时候,因为还没有登录会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据(ticket);用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统B和应用系统C了。

认证系统功能要求

  • 所有应用系统共享同一个身份认证系统 
    • 统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket)并立即返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。
  • 所有应用系统能够识别和提取ticket信息 
    • 要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

OAuth 2.0

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

业务流程

OAuth在“客户端”与“服务提供商”之间设置了一个授权层(authorization layer)。“客户端”不能直接登录“服务提供商”,只能登录授权层,以此将用户与客户端区分开来。“客户端”登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。

“客户端”登录授权层以后,“服务提供商”根据令牌的权限范围和有效期,向“客户端”开放用户储存的资料。

总结

通过上面的概述大家可以很清楚的想明白两者的适用场景,以面向的用户不同可以做个划分,sso服务对象是各个应用系统,oauth服务对象是用户。

入门

架构

这里写图片描述

系统组件

CAS系统架构包括CAS Server和CAS Clients,它们是通过各种协议进行通信的两个物理组件。

CAS Server

CAS Server是基于Spring框架构建的Java Servlet,其主要职责是通过发出和验证票证来验证用户并授予对使用CAS的服务(通常称为CAS客户端)的访问权限。当用户在服务器上登录时向会向用户发出票证(TGT)并创建SSO会话。通过使用TGT令牌进行浏览器重定向,根据用户的请求向服务发出服务票证(ST)。随后通过反向通道通信在CAS服务器上验证ST。这些业务流程在CAS协议文档中非常详细地描述。

CAS Clients

“CAS Client”在具体使用中有两个不同的含义,CAS Client是可以通过所支持的协议与服务器通信的任何启用CAS的应用程序,CAS Client还可以是可以与各种软件平台和应用集成以便经由某种认证协议(例如,CAS,SAML,OAuth)与CAS Server通信的软件包。客户端支持多种软件平台和应用的CAS客户端已经开发。

  • 平台 
    • 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协议支持委托(代理)认证,SAML协议支持属性释放和单点退出。

  • 支持的协议 
    • CAS (versions 1, 2, and 3)
    • SAML 1.1 and 2
    • OpenID Connect
    • OpenID
    • OAuth 2.0
转载自:CAS单点登录(SSO)介绍及部署

猜你喜欢

转载自blog.csdn.net/qq_26222859/article/details/80716239
Cas