SSO单点登录/登出

SSO单点登录

单点登录是指用户在某个应用系统上登录之后,进入其子应用或相关应用系统可以免去登录步骤,从而实现一次登录,到处操作。如:有业务服务器a.com和b.com,还有SSO服务器 sso.com,在a.com上完成登录操作之后访问 b.com 时是已登录状态。

1、用户首次访问 a.com/user 时,到 a.com 服务器获取不到session

2、给用户弹出一个SSO的登录页面 sso.com/login.html,这个页面会带上两个参数,分别是开发者平台映射值key(即某个业务服务器在SSO所映射的key)和回调地址redirect(即登录成功之后跳转到的url,一般是所发起业务服务器开放的路由)

3、用户输入账号密码之后到SSO服务器上进行身份校验,若校验成功则给用户生成一个ticket,并将该ticket值及用户基本信息一起创建SSO服务器session

4、选择某种加密方式对该请求的session进行加密之后生成一个token值,然后在回调地址redirect里带上token参数并跳转回去a.com服务器。

5、a.com 对token参数进行解析后拿到用户基本信息和ticket值,相应地初始化本地session并将ticket值也记录下来。

6、用户再次访问 a.com/user 或其他页面的时候,到 a.com 上获取session并到 sso.com 上校验ticket值得有效性,两个操作都成功之后才返回用户信息;若校验ticket值失败,则重新要求用户进行登录操作,即从步骤1开始。

7、现在用户在 a.com 上的登录和访问流程已完成,那这时用户访问 b.com/user,到b.com上获取不到session,则会重定向到 sso.com/session,因为之前 a.com 已在 sso.com 上登录过,故请求 sso.com/session 的时候SSO服务器能将session中用户信息和ticket值返回给 b.com。

8、b.com 获取到用户信息和ticket值之后和 a.com 做相同的事情即可,这样就完成了单点登录的整个流程。

SSO单点登出

单点登出则是指用户只要在 a.com 服务器上进行登出操作,则在其他业务服务器如b.com上也应处于未登录状态,单点登录流程的步骤6中提到每次用户访问业务服务器路由检验用户当前状态时不仅仅查找本地有没有session,还要到SSO服务器上校验ticket值的有效性,所以只要有一个业务服务器登出时令ticket失效即可。

1、现在用户是登录状态,他从 a.com 进行了退出操作,则自然 a.com 已将其session清除。

2、a.com 服务器同时还要携带ticket值发请求到 sso.com 将对应的记录清除。

3、当访问某个 b.com 某个页面时,虽然在 b.com 服务器上获取到session,此外还需要到SSO服务器上校验一遍ticket值,而发现ticket值校验失败,则会提示用户当前处于未登录状态。

4、这样相当于 b.com 也已经是退出登录,完成了单点登出的整个流程

猜你喜欢

转载自tzhennan.iteye.com/blog/2422874