CAS搭建单点登录Web端

CAS搭建单点登录Web端,第1张

①前端vue项目判断如果有token,则说明用户已登录,可以访问咐弊客户端A的服务。否则未登陆,未登陆有两种状态:在单点登录服务端已经登录和未在单点登录服务端登陆

    判断如果有ticket,则说明已在单点登录服务端登录。调用/cas/client/validateLogin接口验证该衡做族ticket是否有效。转②

    判断如果无ticket,则说明未在单点登录服务端登录。则定向到单点登录服务端。转③

②/cas/client/validateLogin接口方法,发起http请求到单点登录服务端进行ticket验证,如果验证通过,则登录成功。单点登录客户端A生成token返回给前端,之后前端通过携带token访问客户端A的服务。

③单点登录服务端返回登录表单,用户输入用户名密码确定登录后,单点登录服务端调用用户信息验证端/auth/user/login接口,传递用户名密码参数,将验证委托给用户信息验证端

④登录成功验证通过后,携带ticket返回浏览器,重定向地址胡掘如下:

http://localhost:8000/?ticket=ST-6-NqvtyjRhezstXiyyzNNN-C-DiTw-DESKTOP-CVVQ0QK

接入用户信息验证端参考

真的如老话所说,“没有笨的人,只有懒得人”。前段时间碰滑时间需要和其他项目做cas集成,于是乎在网上找了几篇教程看了一下,好了,很简单,学会了,开搞(自以为研究明白)。集成完事了,登录成功了,自以为这就过去了。然而,没过几天就出bug了,这下惨了,当初没有好好学出了问题都不知道咋解决。无奈,只得静下心来好好学习一番(当初太懒付出的代价)。原理其实很简单的,只要耐下心来好好研究终会搞懂的。

先看下图

那么是如何验证用户是否登录过呢?

如果session中包含“ const_cas_assertion ”属性,说明已经登录,跳过此过滤器执行配置的其他过滤器;

如果ticket参数不为空(可能是登陆后跳转回来的),跳过此过滤器,执行TicketValidationFilter 验证ticket;

如果前两个条件都不满足,重定向到cas服务端,返回登录页面进行登录 *** 作。

Cookie中的CASTGC:向cookie中添加该值的目的是当下次访问 www.cas.server.com 时,浏览器将Cookie中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT。从而判断用户是否登录过了,是否需要展示登录页面。TGT与TGC的关系就像SESSION与Cookie中SESSIONID的关系。

TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)。

TGC:Ticket Granted Cookie(cookie中的value)销野,存在Cookie中,根据他可以找亏吵喊到TGT。

ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就生效了。也就是上面的ticket值。

为了加深理解,也为了以后作参考,整理记录。另外,还要说一句,不要偷懒,多动手多动脑!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11967322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存