一、什么是CAS
CAS(Central Authentication Service)是耶鲁大学发起的一个企业级的,开源的项目,旨在为 web 应用系统提供一种可靠的单点登录解决方案(属于 web SSO)。
主要特性:
开源的、多协议的SSO解决方案;Protocols:custom Protocol、CAS 、OAuth、OpenId、Restful API、SAML1.1、SAML2.0等。
支持多种认证机制:Active Directory 、JAAS 、JDBC、LDAP、X.509、Certificates等。
安全策略:使用票据(Ticket)来实现支持的认证协议。
支持授权:可以决定哪些服务可以请求和验证票据(Service Ticket)。
提供高可用性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有EhcacheTicketRegistry , JDBCTicketRegistry,JpaTicketRegistry、MemcacheTicketRegistry 等。
很多支持分布式环境的实现,如:BerklyDB、Default。
支持多种客户端:Java、.Net、PHP、Perl、Apache、uPortal等。
二、什么是SSO
单点登录(Single Sign On)是目前比较流行的服务于企业业务整合的解决方案。SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
1、SSO体系的主要角色:
user(多个)、Web应用(多个),SSO认证中心(一个)。
2、SSO实现模式的原理、原则:
所有的认证登录都是在SSO认证中心进行;
SSO认证中心通过一些方法来告诉Web应用当前访问用户究竟是不是已通过认证的用户;
SSO认证中心和所有的Web应用建立一种信任关系,也就是说Web应用必须信任认证中心。
3、SSO主要实现方式
共享的cookies
基于共享同域的cookie是web刚开始阶段使用的一种方式,它利用浏览器同域名之间自动传递cookies的机制,实现两个域名之间系统令牌传递问题;另外,是跨域问题,虽然cookies本身不跨域,但可以利用它实现跨域的SSO。如:代理、暴露SSO令牌值等。
缺点:不灵活且有不少安全隐患,已经被抛弃。
Broker-based(基于经纪人)
这种技术的特点就是,有一个集中的认证和用户账号管理的服务器。经纪人被用于进一步请求的电子身份存取。中央数据库的使用减少了管理的代价,并为认证提供了一个公共和独立的第三方。例如:kerberos,Sesame、IBM Kryptoknight(凭证思想库)等。kerberos 是麻省理工大学发明的安全认证服务,已被UNIX和Windows作为默认的安全认证服务进程进操作系统。
Agent-based(基于代理人)
在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序,这个代理程序需要设计有不同的功能。比如:它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理人被放在服务器上面,在服务器的认证系统和客户端方法之间充当一个翻译。例如SSH等。
Token-based
例如 SecureId,WebID,现在被广泛使用的口令认证,如 ftp,邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。
基于网络
基于SAML
SAML(Security Assertion Markup Language 安全断言标记语言)的出现大大简化了SSO,并被OASIS批准为SSO的执行标准。开源组织OpenSAML实现了SAML规范。
三、SSO实现原理
从结构体系上看,CAS包括两部分:CAS Server 和 CAS Client。
CAS Server:CAS Server 是负责完成对用户的认证工作,需要独立部署。CAS 会处理用户名、密码等凭证(Credentials)。
CAS Client: 负责处理客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证(原则上,客户端应用不再接受任何的用户名、密码等Credentials)。CAS Client 与受保护的客户端用于一起部署,以filter的方式保护受保护的资源。
CAS原理与协议,基础模式SSO访问流程主要有以下步骤:
1、访问服务:SSO客户端发送请求访问应用系统提供的服务资源;
2、定向认证:SSO客户端重定向用户请求到SSO服务器;
3、用户认证:用户身份认证;
4、发放票据:SSO服务器会产生一个随机的Service Ticket;
5、验证票据:SSO验证票据service Ticket 的合法性,验证通过后,运行客户端访问服务;
6、传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。