Yale CAS(耶鲁集中认证服务)简介
2012-07-13 12:07:28 来源:我爱运维网 评论:0 点击:
CAS(Central Authentication Service)是Yale大学发起的一个开源项目(http://www.jasig.org/cas),为Web应用提供了单点登录(SSO)支持。CAS...
其主要特点是:
- 支持跨域的web应用SSO
- CAS Server内置支持多种常见验证后端,比如Windows AD, LDAP, JDBC等; (详见 https://wiki.jasig.org/display/CASUM/Authentication),也可以自己根据需要扩展验证方式;
- 支持将用户认证状态信息存放到TicketRegistry并被多个CAS Server Instance共享,为高可用性提供了可能;
- 内置了Services Management管理界面,可以控制允许用户访问的services和各项Services可以访问的用户属性;
- Client端有官方对于主流web编程语言Java, PHP, .net的支持,同时有大量第三方开源client支持几乎所有主流web开发语言;( https://wiki.jasig.org/display/CASC/Home)
由于CAS是纯Web SSO,因此不能满足桌面应用的SSO需求。
Yale CAS的基本原理是通过安插在web应用的client端用来截获认证请求,将用户重定向到CAS Server,由CAS Server做用户的统一认证和对web应用访问的授权。
以下是CAS基础的工作模式流程图:
参照上图,一个基本的用户认证流程是:
- 用户浏览器访问web应用 http://helloservice, CAS Client会截获用户认证请求;
- CAS Client将用户重定向到CAS Server,并再URL中注明用户访问的service名称,即service=helloservice;
- CAS Server查看用户的cookie中是否有Ticket Granting Ticket(TGT):
- 如果已有TGT,则说明用户已经登陆过,不需要再登录,因此直接为用户访问的Service颁发一个Service Ticket (ST);
- 如果没有TGT,则给出用户登录界面,让用户输入用户名和密码,验证Credential后决定是否颁发TGT,直到决定是否颁发ST;
- 用户被重定向回web应用,并再url中携带service和ST信息;
- web应用中的CAS Client向CAS Server验证Service和ST的有效性;
- 如果ST有效,CAS Server象Client返回用户的身份。
因此web应用本身不需要保存用户credential的信息,所有用户认证都是在CAS Server端完成的。
在整个验证流程中, Service Ticket在使用一次以后就过期,因此CAS Server和CAS Client之间可以不用采用SSL连接。 但是CAS Server给用户浏览器颁发的TGT是有有效期的(默认2小时),所以CAS Server一般被配置成https从而保证TGT在发给用户浏览器的过程中的安全性。
对于更复杂的认证场景,比如用户==>service1==>serivce2,CAS还提供了Proxy认证机制,即CAS Client可以代理用户去访问其他WEB应用。 这种模式目前超出了我们的应用范围,因此不做深入研究。
分享到:
收藏