Zerlinda's Blog

浅谈sso单点登录

一、sso

1、sso简介

SSO英文全称Single Sign On

单点登录是一种控制多个相关但彼此独立的系统访问权限的机制, 拥有这一权限的用户可以使用单一的ID和密码

访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统,

它是目前比较流行的企业业务整合的解决方案之一,例如使用mis号登陆过公司的一个系统后,再登陆其他系统不用再次输入用户名和密码。

2、不需要sso的情况

2.1、单系统登录

单系统登录无需引入单点登录,登录后,登录状态保存在session中,并通过cookie给前端返回sessionId,

前端后续的请求,浏览器会根据请求的域名在请求中加上相应的cookie,

服务端使用cookie中的sessionId,去session取出登录信息,判断登录状态和用户信息。

2.2、同域名不同站点

例如有两个站点:

www.sso.com/site1

www.sso.com/site2

如果用户登录了site1,浏览器将会保存一个cookie,对应的默认域名是www.sso.com,用户访问site2的时候,

浏览器判断是同一个域名,将会在请求中加入cookie信息。这样的话,服务器端不需要修改。

3、一般 需要sso的情况

不同域

多个相关但彼此独立的系统,域名不同,登录其中的一个系统,访问其他系统就不需要再次登录,如

www.service1.com

www.service2.com

这时候需要sso登录进行权限验证。

不同子域

两个站点的二级域名相同,但是三级域名不同,例如

a.sso.com

b.sso.com

默认情况浏览器请求的时候,会根据域名发送该域名对应的cookie,也就是说,来自于a.sso.com的cookie默认所属的域是.b.sso.com,

请求b.sso.com的时候不会发送a的cookie。

4、一般 单点登录过程

主要目的为获取token凭证 -> ssoid

访问A系统

  • 用户未登录时访问系统A,系统A服务器检测到用户没登录(cookie中没有登录token),于是通知浏览器。

  • 浏览器跳转到SSO的服务站点,并在当前域名对应cookie中种上页面地址(登录成功后显示)。

  • sso服务站点检测到用户没有登录,显示登录界面。

  • 用户提交登录请求到sso服务端,验证通过,创建和账号对应的用户登录凭据(token)。

  • sso服务端通知浏览器把该token放入sso服务站点对应的cookie中,并跳转回系统A的回调地址(在此进行相关种cookie操作),在URL参数中携带token。

  • 系统A服务端检测到浏览器请求的URL中带了单点登录的token,于是把这个token发到SSO服务站点验证。sso服务端站点验证通过后会返回系统A用户信息。

  • 系统A得到成功响应后,将token放入系统A域名对应的cookie中,从而完成在本站的登入以及会话保持。之后用户访问系统A时,都会带上这个cookie。

登录后请求过程

  1. 用户在某个系统登录后,后续的请求都会携带token,服务端获取token后会到sso进行校验,校验成功后会返回用户信息

  2. 服务端拿到用户信息后继续后面的操作

  3. 如果token失效,服务端将会清空cookie中的token然后进行单点登录的流程

发表评论

电子邮件地址不会被公开。 必填项已用*标注