什么是单点登录(SSO)?

242 阅读2分钟

为什么需要单点登录?

在回答什么是单点登录之前,我们先来了解为什么需要单点登录?

在单系统环境下,为了能够维持用户登录状态,我们使用了session来存储用户的状态。但是,随着网络的发展,单系统的应用不能够承载日益增长的用户。

于是,多系统的应用出现了。随着而来的问题就是,在多系统下,如何存储用户的登录状态。我们知道session是存储在服务器的,多系统下session不能共享。这样的话,当用户访问不同机器的时候,都需要登录。因此,我们需要实现单点登录

单点登录的定义

单点登录,Single Sign On,简称SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他互相信任的应用系统。

单点登录的实现

同域下的单点登录

一个企业用一个二级域名,通过三级域名区分不同的系统。

假设现在公司有一个二级域名 a.com。现在其名下有两个业务系统和一个登录系统,分别用三级域名:app1.a.com 、 app2.a.com 、 sso.a.com 。

现在要实现单点登录存在两个问题:

  • Cookie是不能跨域的。当我们在登录系统登录后,此时Cookie的domain属性是 sso.a.com, 当浏览器向业务系统发送请求的时候,cookie存储的信息是不会包含在请求头的。

  • 登录系统和两个业务系统是不同的系统,它们的session是存储在当前系统上,是不共享的。

为了解决这两个问题,我们可以这样做:

  • 将Cookie的域设置为二级域,a.com。这样所有子域的系统都能访问到二级域的Cookie。

  • 将三个系统的session的session共享,共享Session的解决方案有很多,例如:Spring-Session。

不同域下的单点登录

使用token完成用户的验证

这里我就不介绍了,想简单了解的可以下面我参考的文章

参考文章

单点登录(SSO)看这一篇就够了