这就是单点登录:即使hotmail和msn的域名表明它们完完全全就是两个不同的网站,但是由于它们使用了同一个单点登录服务,因此在登陆hotmail之后再登陆msn,您刚刚输入的用户身份凭证依然有效。
这种在一处登录就能直接访问其它应用的功能在企业级应用中是非常有用的。试想这样一个情景:在每天的工作中,我们总需要通过浏览器访问几十个系统。如在浏览器中阅览公司邮件,在需要撰写Wiki的时候需要登录到公司的Wiki系统。而报销,请假,公司共享文件服务器等都需要用户登陆。而且如果一个公司的IT部门对安全比较重视,那么他们还会要求员工在一定时间内更换一次密码。试想一下,如果公司内部有几十个系统,那么每个员工都需要维护几十个密码,并且每隔几天就需要针对一个系统更改一个密码。这种密码管理的开销无论对于员工本身还是对于IT开销都是巨大的。
反过来,如果这些系统都使用同一个用户登录服务,那么我们就可以免除在每次登入一个系统时都要输入密码的开销,而且每个员工只需要管理一个密码。
因此,如果希望自己的企业级应用能够成功地进入各个大型企业,那么这个产品就必须支持标准的单点登录协议,即CAS协议。而只有在正确地理解了CAS协议的基础之上,我们才能在我们的产品中正确地添加对单点登录的支持。而这也便是我写这篇文章的真正原因。
CAS协议的工作流程
现在我们知道了单点登录给我们所带来的好处,但是我们并不知道它是如何工作的。由于CAS协议的执行流程较为复杂,因此,让我们首先来看一个生活中的与单点登录相似的事例,以辅助我们对单点登录运行流程的理解。
假设公司马上就要来一位新同事,公司的行政人员需要在该同事到来前为他置办好日常工作所需要的各种办公用品。这些办公用品包括工作用的电脑以及一套全新的办公桌椅。在置办完这些办公用品后,该行政人员还要拿着购买办公用品时所开具的发票去公司的财务部报销。为了节省时间,该行政人员将会使用公司车辆在公司和卖场之间运送货物。
由于公司的司机常常在外奔波,因此他可能并不知道当天需要载着这位行政人员去购买办公用品。在该行政人员找到他之后,他无法确认行政人员的用车安排是否与公司的其它安排相冲突。因此司机会让行政人员打电话给公司的领导确认他是