CAS 单点登录

场景:

    在如今分布式盛行,尤其是很多公司都拥有不止一个系统,而且这些系统间应该需要实现一次登录处处通行。

    这里就涉及到了单点登录的问题。

传统形式:

Cookie: 使用跨域cookie的形式(a.hypers.com,b.hypers.com类似这种的二级域名)

缺点: 浏览器最多保存300个cookie,单个web服务器的最多只能保存20个cookie;每个cookie不能超过4000个字节,

不能跨一级域名访问(如: hypers.com,nielsen.com)

安全性问题,cookie到底还是账号密码的载体,如果被拦截且被了解加密方式,用户信息会泄露。


CAS 单点登录_第1张图片

CAS 单点登录形式:

cas单点登录:理解起来就是去看电影,先直接去院厅,但是门口有检票员,发现你没有票,提醒你去售票处买票。当然,这种情况,如果你是有票的或者你刚刚出来去上厕所,现在回来的,肯定是直接放行了。

关键点: 电影院(父系统,一个大的系统生态),院厅(多个子系统,隶属于父系统),检票员(校验票据的过滤器),售票处(统一认证中心)

归纳:cas单点登录机制就是,先去访问子系统,当发现没有登录且没有票据时,重定向到统一认证中心登录,获取票据。


CAS 单点登录_第2张图片

这里的是我们系统中用到的,其实校验状态可以在一个过滤器里面也行。

这里面有几个概念,TGT,TGC,ticket。还是用电影院的例子来说。

TGT(会员卡记录): 在认证中心登录时生成的,保存在认证中心,相当于注册会员的记录。

TGC(会员卡): 登录后保存在浏览器的cookie,相当于注册会员后给你发的会员卡。

ticket(电影票): 带着自己想要看什么电影去购买的票据(访问哪个子系统),只能使用一次,当然这个票是不要钱的(PS:这还是比较开心的)。


总结

    这里有一家只有会员可以买电影票的电影院,当然,电影票还是免费的。

    每个院厅放着不同的电影,门口有检票员,你只有带着相应的电影票才可以进去观影。

    当你没有电影票时,检票员会让你到售票处买票,你需要告诉售票员你要买什么票。售票员问你有没有会员卡(TGC),你回答说没有,售票员说我们这里只有会员才可以买电影票(ticket),要不你办一个吧,然后你就填写信息办理会员卡(登录),这时候在售票处就有了你的会员记录(TGT)。

    售票员确定你填写的信息无误后发个你个会员卡(TGC),上面还有过期时间,告诉你过期了需要重新办理,然后顺便给了你张你想看的电影的电影票。

    你拿着电影票给检票员,检票员把票据撕下来,票根还给你,通过了检票员的你坐在院厅里美滋滋的看着电影,中间出去上个厕所回来,检票员都不检查你的电影票了,你想着,还是长得太帅了,检票员都记住我了。

    这场电影看完了,你意犹未尽,想看另一个电影,但是那个院厅的检票员又把你拦下来了,让你去售票处买票,这一次售票员问你有没有会员卡,你啪的一下扔给了他,他很快就给了你张电影票,让你去院厅观影,跟检票员出示了下票据,还是一样把票据撕下来,票根给了你,你又可以坐在院厅里美滋滋的看着电影,中间去上了个厕所,回来后发现票根丢了,心里想着还好检票员记得我。

    看完电影出来,你发现有个人在跟检票员争论,大致意思是不让他进去,但是检票员说他的电影票没有用,你走近一看,发现是你丢的票根,后来问检票员才知道,没了票据的票根是无效了,也就是说电影票只能用一次。

你可能感兴趣的:(CAS 单点登录)