通俗易懂单点登录SSO

一、cookie及session

在了解之前,我们先了解以下知识:「cookie及session

具体看这篇介绍

二、普通的登录认证机制

普通登录认证机制的过程:

  1. 用户访问一个系统,这个系统需要登录,于是向后台服务器发送登录请求;
  2. 数据库中根据用户传来的用户名和密码进行判断,判断成功后完成登录认证,登录认证成功,服务器把用户的登录信息写入 session;
  3. 服务器为该用户生成一个 cookie,返回而写入浏览器;
  4. 下一次,当用户再次访问这个系统的时候,请求中会带上这个 cookie,服务端会根据这个 cookie 找到对应的 session,通过session来判断这个用户是否已经登录。
    在这里插入图片描述
    如果只有一个或者两个系统,这种普通的登录认证机制还是可以满足需求的,但是,如果在多系统的环境下,在操作不同的系统时,就需要多次登录,这种方式就变得很不方便,而当点登录就是来解决这种情况的。

三、什么是SSO?

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。

简单来讲就是,在一个多系统的环境中,用户只需要登录一次,就可以同时登陆访问其他互相信任的系统。
在这里插入图片描述

四、SSO的优点

使用单点登录的好处:

  • 降低访问第三方网站风险(用户密码不存储或外部管理);
  • 从不同的用户名和密码的组合减少密码疲劳;
  • 减少花费的时间重新输入密码相同的身份;
  • 降低IT成本适当降低一些IT帮助台调用有关密码;
  • SSO集中的所有其他应用程序和系统,用于身份验证服务器的身份验证,并与技术相结合是为了确保用户不必主动输入凭据一次以上。

五、不同场景下的单点登录

5.1 同域的 SSO

此时两个系统都在同一个域名下,通过二级域名区分不同的系统。比如有个域名叫:jd.com,同时有两个应用系统分别为:a.jd.com 和 b.jd.com。

如下图使用 cookie + redis 实现单点登录
在这里插入图片描述

5.2 跨域的 SSO

假设有以下三个网站,我们需要在系统 xiadan 和系统 zhifu 这两个网站站之间实现单点登录。

xiadan 系统:www.xiadan.com
zhifu 系统:www.zhifu.com
SSO 系统:www.sso.com

在这里插入图片描述

SSO的具体流程(以下步骤与图中的步骤一致)

  1. 用户首次访问系统 xiadan,xidan 系统是需要登录的,但用户现在没有登录;由于用户没有登录,所以 xiadan 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址,同时 url 的 query 中通过参数指明登录成功后,回跳到 xiadan 的页面;
  2. SSO 服务器判断用户未登录,给用户显示统一登录界面。用户在 SSO 的页面上进行填写用户名和密码,进行登录操作;
  3. SSO 系统进行认证成功后,SSO 服务器创建授权令牌(token),同时返回一个 http 重定向,浏览器重定向到系统 xiadan:www.xiadan.com。此时重定向的 url 中携带着 SSO 服务器生成的授权令牌。
  4. 系统 xiadan 拿到授权令牌,向 SSO 服务器发送请求,校验令牌是否有效;
  5. 验证成功后,xiadan 服务器知道用户已经在 SSO 登录了,于是 xiadan 服务器构建用户登录 session,记为 xiadan session,并将 cookie 写入浏览器;
  6. 之后用户访问 zhifu,zhifu系统没有登录;由于用户没有登录,所以 zhifu 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址;
  7. 浏览器询问用户在 SSO 中的登录状态,SSO 服务器根据授权令牌判断用户已经在 SSO 登录过了,SSO 服务器返回一个http重定向,携带授权令牌,跳转到系统 zhifu:www.zhifu.com;
  8. 系统 zhifu 拿到授权令牌,向 SSO 服务器发送请求,校验令牌是否有效,验证成功后,zhifu 服务器知道用户已经在 SSO 登录了,于是 zhifu 服务器构建用户登录 session,记为 zhifu session,并将 cookie 写入浏览器。

这样,zhifu 系统不需要再输入用户名和密码进行登录流程,就已经是登录了。之后当用户访问 xiadan 或者 zhifu 后,直接会携带 xiadan cookie / zhifu cookie,就不用再向 SSO 确认了。

猜你喜欢

转载自blog.csdn.net/Fristm/article/details/125628175
今日推荐