单点登录及CAS简介

SSO简介

单点登录(Single Sign-On,简称SSO),通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理

比如说阿里,如果在淘宝登录了,打开天猫,那么天猫上也是登录了的(即无需再次登录),这里就是使用了SSO。

SSO实现核心原则:

1.所有登录必须在SSO认证中心完成。

2.SSO认证中心通过一些方法来告诉Web应用当前用户是不是已经通过认证了的。

3.SSO认证中心和所有的Web应用建立一种信任关系,SSO认证中心对用户身份正确性的判断会通过某种方法告之 Web 应用,而且判断结果必须被 Web 应用信任。

SSO登录原理

SSO有一个独立的认证中心,只有认证中心接受用户信息的验证,其他系统则无需提供登录入口,只需要接受认证中心的间接授权。当SSO验证了用户信息正确性后,会创建授权令牌,在跳转过程中将授权令牌作为参数发送给各个子系统,子系统拿到授权令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。

登录时序图:

从上面的登录时序图,分析出具体流程如下:

1.首先用户访问系统1受保护的资源,系统1发现未登陆,跳转至SSO认证中心,并将自己的参数传递过去。

2.SSO认证中心发现用户未登录,将用户引导至登录页面。

3.用户输入用户名和密码提交至SSO认证中心。

4.SSO认证中心校验用户信息,创建用户与SSO认证中心之间的会话,称为全局会话,同时创建授权令牌

5.SSO认证中心带着令牌跳转回最初的请求地址(系统1)。

6.系统1拿到令牌,去SSO认证中心校验令牌是否有效

7.SSO认证中心校验令牌,返回有效,注册系统1的地址。

8.系统1使用该令牌创建与用户的会话,称为局部会话,返回给用户受保护资源。

9.用户访问系统2受保护的资源。

10.系统2发现用户未登录,跳转至SSO认证中心,并将自己的地址作为参数传递过去。

11.SSO认证中心发现用户已登录,跳转回系统2的地址,并附上令牌。

12.系统2拿到令牌,去SSO认证中心校验令牌是否有效

13.SSO认证中心校验令牌,返回有效,注册系统2地址。

14.系统2使用该令牌创建与用户的局部会话,返回给用户受保护资源。

用户登录成功之后,会与SSO认证中心及各个子系统建立会话,用户与SSO认证中心建立的会话称为全局会话用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过SSO认证中心,全局会话与局部会话有如下约束关系:

1.局部会话存在,全局会话一定存在

2.全局会话存在,局部会话不一定存在

3.全局会话销毁,局部会话必须销毁

SSO注销原理

在一个子系统中注销,所有子系统的会话都将被销毁。SSO认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作。

注销时序图:

从上面的注销时序图,分析出具体流程如下:

1.用户向系统1发起注销请求。

2.系统1根据用户与系统1建立的会话id拿到令牌,向SSO认证中心发起注销请求。

3.SSO认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址。

4.SSO认证中心向所有注册系统发起注销请求。

5.各注册系统接收SSO认证中心的注销请求,销毁局部会话。

6.SSO认证中心引导用户至登录页面。

CAS简介

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

CAS协议至少涉及三方:客户端Web浏览器,请求身份验证的Web应用程序和CAS服务器。 它也可能涉及后端服务,如数据库服务器,它没有自己的HTTP接口,但与Web应用程序进行通信。

CAS结构体系

在CAS的结构中主要分两部分,一部分是CAS Server,另一部分是CAS Client。

CAS Server:CAS Server 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 / 密码等凭证(Credentials)。

CAS Client:负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证(原则上,客户端应用不再接受任何的用户名密码等凭证)。

CAS协议

CAS协议是一个简单而强大的基于票据的协议,它涉及一个或多个客户端和一台服务器。即在CAS中,通过TGT(Ticket Granting Ticket)来获取 ST(Service Ticket),通过ST来访问具体服务。

TGT(Ticket Granting Ticket)是存储在TGCcookie中的代表用户的SSO会话

ST(Service Ticket),作为参数在GET方法的URL中,代表由CAS服务器授予访问CASified应用程序(包含CAS客户端的应用程序)具体用户的权限

本文为转载文章,感谢博主,想要更详细的了解,可参考博主的博文,链接如下

https://blog.csdn.net/anumbrella/article/details/80821486

发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40885085/article/details/104377189
今日推荐