前言:
小面学弟:小面,啥是单点登录啊?
小面:单点登录啊,就是SSO,你可以简单理解为,假如你有多个系统A,B,C,D, 你只要登录过一次A,那么在其他可信任的系统BCD就都可以去访问了。
小面学弟:哦~原来是这样,那啥是CAS啊?
小面:CAS就是一个开源项目,是一种可靠的单点登录。
小面学弟:小面,能详细讲讲不?
小面白眼。
正文:
CAS主要分为两个部分,一个是client端,一个是server端。
server端主要职责是,对用户进行认证操作,需要去独立部署。
client端主要职责是,对于受保护的信息资源,client会重定向至server端进行认证操作。
假设我们要访问一个网站A。用户第一次访问网站A,会经过认证过滤器,这个认证过滤器的主要作用就是去看该用户是否在该网站进行过登录操作,如果认证过滤器返回该用户没有进行过登录操作,那么将会重定向到认证中心(CAS Server)。
此时我们将会重定向www.CASXXX.com?A地址 ,他会拼接上原来要访问的网站A,这样认证完成后会重定向至A。
我们会向CAS认证系统发出请求,CAS认证系统接受请求返回登录页面。用户进行登录操作,提交请求。
此时CAS Server端就会根据用户输入的账号密码进行认证操作。并且响应浏览器。同时返回一个ticket令牌,在Cookie中设置一个TGC,这个cookie是CAS认证系统的cookie,我们只有携带了这个cookie,我们才可以正常地去访问这个网站。
TGC可以理解为,我们下一次访问CAS认证系统,浏览器就会带着TGC去访问,Cas就会根据TGC去查找TGT,判断用户是否登录。客户端拿到ticket后,会经过ticket过滤器,去CAS判断该ticket是否有效。
通过ticket校验后,session就会被保存进用户的信息。下一次访问的时候,就可以直接了当获取到用户信息从session中,不用再次验证了。网站A接收到了CAS认证系统,知道了用户已经登录,ticket有效。这样用户第一次访问就就结束了。
当用户第二次访问网站A。我们还是会经过认证过滤器,但是此时客户端已经有session,可以获取到用户信息,所以不需要进行验证,可以直接访问。
当用户第一次访问网站B。将重定向到CAS认证中心,由于我们已经进行过登录操作,因此浏览器是带着cookie的。认证中心收到请求后,签发一个ticket给浏览器。然后会重定向到client端。client端带着ticket去验证是否有效。认证成功后,把用户信息存进session。同时告知浏览器可以访问。
这里小面绘制了一个流程图给大家看一下,以方便大家去理解。
总结:
总结就是:重定向到CAS Server ,用户输入账号密码,验证成功后,建立浏览器和CAS的信任,然后CAS返回ST,应用服务器拿到st去CAS认证是否合法, 认证成功那应用与浏览器建立信任。
今天的分享就到此结束,如果觉得本文不错的还请伙伴们帮忙点赞转发,欢迎持续关注我们!