CAS实现单点登录(SSO)过程浅析

一、何谓单点登录

单点登录(Single Sign On),简称为SSO,简单理解就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

二、何谓CAS

CAS(Central Authentication Service)是耶鲁大学的一个开源项目,旨在为web应用系统提供一种可靠的单点登录解决方案。采用CAS最大的是从安全性角度来考虑的,用户在CAS录入用户名和密码之后通过ticket进行认证,不会在网上传输密码,保证安全性。

三、CAS中的关键词理解

ST(Service Ticket):服务票据,服务的唯一标识码,由TGT生成ST,返回给用户,接着拿着生成的ST去访问service,service又会把ST拿到CAS系统去验证,验证通过后才允许用户访问该资源。

TGC(Ticket Granting Cookie):CAS系统用来识别用户身份的凭证。

TGT(Ticket Grangting Ticket):授权票据,获取这TGT之后才能申请服务票据(ST),用户如果在CAS系统认证成功之后,就会生成TGC写入浏览器,同时也生成一个TGT,TGT对象的id就是cookie值。之后每次请求过来通过此cookie来从缓存获取TGT,就不用提交身份认证信息(Credentials)。

Session:各个应用系统会创建自己的session表示是否登录,而这里的每个session都是ST验证通过之后组装生成的。

四、实现原理

假设我们现在有应用系统A、应用系统B、CAS认证系统

1、第一次访问系统A时,没有票据(ST),也没有session,会重定向到CAS服务器,要求用户输入用户名和密码,之后CAS向浏览器写入TGC,同时生成TGT保存到缓存,CAS服务器会根据TGT生成ST,然后CAS会重定向到给应用系统A,CAS将这个ST和成功登录的用户,以及服务联系在一起。这个ST使用次数(numberOfUses)和有效时间(timeToKill)是可配置的,超过设置的次数或者超过有效时间就会失效。

2、应用系统A收到这个ST之后,它并不知道这个用户已经登录成功,就通过将ST传递给一个校验URL,校验URL拿到Cas系统去验证,CAS通过验证之后返回用户信息,并且将ST作废。

3、应用系统A根据从CAS收到的用户信息将session创建起来,这样我们的应用就拥有了一个自己的session。

4、第一次访问另一个应用系统B,也是没有票据(ST),也没有session,会再次被重定向到CAS系统,CAS系统会去获得TGC,如果该TGC没有失效,则拿到TGT生成ST给用户重定向到系统B,系统B拿到ST之后再去CAS系统验证(同应用系统B的验证方式),验证成功则创建session;如果TGC失效,那么用户还是要重新认证。

5、再去访问系统A时,没有票据,因为票据只能用一次,但是我们有session,所以不用跳转到CAS去签发票据了,直接允许用户访问。

6、用户登出的时候,CAS系统接受请求后,会检测用户的TGC,把对应的session清除,同时会找到所有通过该TGC进行SSO登录的应用服务器URL提交请求,所有的回调请求中,包含一个参数logoutRequest,内容格式如下:

@NOT_USED@

[SESSIONIDENTIFIER]

所有收到请求的应用服务器会解析这个参数,取得sessionId,根据这个Id取得session后,把session清除。

四、列举点融网统一验证中心后端的一个例子

现有两个系统,一个是techops应用系统,是web界面的管理控制台,通过techops录入资源,角色,做权限分配。

另一个是cas系统,即我们的单点登录系统,各个子应用系统通过cas做sso认证。

1、我在本地部署起来两个系统之后,第一次访问techops应用系统http://localhost:8143/techops/,此时我们没有票据,也没有session会重定向到CAS系统。

CAS统一认证登录界面如下,我们看到的链接是:http://localhost:8142/cas/login?service=http%3A%2F%2Flocalhost%3A8143%2Ftechops%2Flogin%2Fcas

后面加入了一个service,通过decodeURIComponent('http%3A%2F%2Flocalhost%3A8143%2Ftechops%2Flogin%2Fcas');解析之后的样子:"http://localhost:8143/techops/login/cas",就是在用户登录成功之后跳转的URL。

2、我们输入用户名和密码,登录成功之后,会跳转到techops系统,携带了一个ticket = ST-1-oYYmrbiaZ7LnFlA77rfr-cas01.dianrong.com(随机生成),同时我们也看到了CAS向浏览器写入了TGC。


techops系统界面如下:

3、下次我们再去访问http://localhost:8143/techops,就不会去签发ticket了,此时techops已经根据从CAS返回的用户信息将session创建起来,我们的session是已经有信息了,浏览器后台是看不到重定向到CAS系统去验证这些流程了。

本文作者:邓海波,90后IT小猿一枚,平时喜欢看看电影玩玩LOL。目前就职于点融成都分公司架构团队,软件开发工程师。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 1. CAS 简介 1.1. What is CAS ? CAS ( Central Authenti...
    人在码途阅读 9,786评论 3 51
  • 一、什么是单点登录? 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在...
    yljava阅读 12,229评论 0 13
  • CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业...
    ackier阅读 1,616评论 0 0
  • 简介 Cas介绍 CAS ( Central Authentication Service ),最初由耶鲁大学的S...
    但莫阅读 14,579评论 0 10
  • 2017.7.20 霸王课:一日看人生 70%的行为受习惯控制,但习惯很难改变,今天做这样一个改变; 如果你在一天...
    5组44号冯维维北京阅读 236评论 0 0