《SSO系列一》初识SSO

来源:互联网 发布:fastjson解析json数据 编辑:程序博客网 时间:2024/06/05 04:41

什么是SSO

单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。比如我们使用淘宝和天猫时,只在一个登陆界面登陆,然后淘宝和天猫的页面里都登陆了,它们不在一个域名下。
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

SSO登陆的流程

这里借助一下CAS的流程图,一般的SSO都是这个流程。

http://p049fjos5.bkt.clouddn.com/sso-liucheng.jpeg

SSO实现原理

注:下面的序号与上面流程图里的序号并不一致。

对于没有登录过的用户:

1.当用户访问业务服务器需要登录的资源时,如果没有登录,会重定向到SSO的登录界面,并把当前的业务请求地址携带上,以便SSO重定向回来。
2.用户通过SSO登录界面登录后,SSO会添加一个Cookie(比如Key为CCC)来标记这个用户的身份。然后重定向到之前的那个业务地址,并且会携带上一个Ticket。
3.业务服务器接收到这个请求时,如果需要登录且没有登录且包含Ticket时,会通过SSO提供的接口去验证Token的有效性,并通过该Token获取到用户在SSO的基本信息,比如Id。

对于已经在别的应用系统里登录过的用户:

1.当用户访问业务服务器需要登录的资源时,如果没有登录,会重定向到SSO的登录界面,并把当前的业务请求地址携带上,以便SSO重定向回来。
2.在用户去访问SSO登录界面的时候,会判断该用户有没有在SSO登录过(上述第二步里的Key为CC的Cookie是否存在),如果已经登录了,那么可以省掉登录这一步,直接生成Ticket,然后重定向到来的那个界面。

对于单点登出,道理是相通的,只需要用户在登出的时候,业务服务器通知SSO服务器,SSO服务器通知各个业务服务器就可以了,这里就不详细描述了。

原创粉丝点击