(一)SSO之CAS框架通俗原理
SSO统一验证
SSO(Single Sign On ),SSO统一验证的目的是为了让多个系统使用统一登录入口,用户只需要登录其中一个系统,在cookie时间内便可以不用登录,就直接进入系统了。
CAS简介
CAS是SSO的一个框架,全称为:Central Authentication Service,是一款不错的针对web应用的单点登录框架,包括java,。net,PHP,Prel,Apache,uPortal,Ruby等。
直接上原理图,如下图所示:
这幅图画的是很不错的,思前想后,还是直接搬过来了,我们以第一次登录和不是第一次登录为分界线讲述。
首先需要明白几个道理,什么是服务器,什么是客户端?
服务器,从第一次听到这个字眼到现在一直让我们感到十分神秘的感觉,一种高高在上的感觉,在天上的感觉。而实际上服务器和我们的这种感觉恰好相反,服务器,就是为别人提供服务的,百度百科是这样说的,server是指一个管理资源并为用户提供服务的计算机。说白了服务器就是一台计算机,只不过这台计算机可以给别的应用或者计算机提供服务,就像餐厅中服务员为顾客服务一样,而一台这样的计算机,人们把他拟人化,称之为服务器。
而服务员是相对于顾客而言的,没有顾客服务员也就不再是服务员,而顾客也可能是其他的服务员,计算机中也是如此,服务器是相对于客户端而言的。
在上图中,我们首先看到的是CAS Client和CAS Server,这就是两个相对的概念。如果没有这个框架,我们系统登录自己系统的页面,那Web Browser就是客户端,而支持系统的后台部署到的那台机器就属于服务器了。当加上CAS的时候,我们就又上升了一层,因为CAS Server是为CAS client服务的。
在这里CAS Client包括CAS 自己的客户端(也就是一个java程序CAS Client jar包)和我们要使用CAS单点登录的项目,他们放在一起组成了CAS Client,而CAS Server 是对输入的用户名和密码进行不同方式的验证。
第一次登录系统,使用CAS流程
用户打开浏览器,通过地址第一次请求受到保护的资源,CAS客户端会把请求自动的重定向到CAS服务器端,CAS服务器端发现没有证据,就直接把CAS server的登录界面转到浏览器,呈现给用户。此时,用户输入用户名和密码之后,点击登录按钮,请求验证,CAS客户端同样重定向到CAS服务器,发现有会话标识,开始进行验证,验证失败,则浏览器中呈现失败的信息。验证成功,会把用户名和密码放到session中,并添加一个证据,跳转到系统的主界面。
第二次请求自己的系统,CAS流程
当用户请求自己的系统,会直接请求到CAS的登陆页面, 然后CAS server端进行判断, 发现有session 和证据, 就直接转到了系统主界面。
我们这样做的话,只能使用CAS自己的默认的登录界面,且各种应用使用的是统一登录界面,这样很不人性化。那可以不可以让不同的应用有自己不同的登录界面,但都记性同一个CAS验证呢?下一篇,不同应用自定义自己的CAS登陆页面。