搜索
简帛阁>技术文章>SSO单点登录原理

SSO单点登录原理

目录

  • 一、cookie及session
  • 二、普通的登录认证机制
  • 三、什么是SSO?
  • 四、SSO的优点
  • 五、不同场景下的单点登录
    • 5.1 同域的 SSO
    • 5.2 跨域的 SSO
      • SSO的具体流程(以下步骤与图中的步骤一致)

一、cookie及session

在了解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 确认了。

目录一、cookie及session二、普通的登录认证机制三、什么是SSO?四、SSO的优点五、不同场景下的单点登录51同域的SSO52跨域的SSOSSO的具体流程(以下步骤与图中的步骤一致)一、c
什么是单点登录单点登录,即SSO(SingleSignOn),是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统单点登录实现原理当访问某个系统时,先从session中获取用户信息
单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非
一、SSO简介单点登录(SingleSignOn,简称SSO)是多个相关但独立的软件系统访问控制的一个属性。通过使用该属性,用户登录与单个ID和密码来访问所连接的一个或多个系统,而不使用不同的用户名或
SSO单点登录SSO单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。实例最初的时候,服务的提供者只做了一个单系统,所有的功能都在单系统上,此时不需要SSO,一次登录
SSO单点登录SingleSignOn一处登陆、处处可用参考:https://giteecom/xuxueli0323/xxlssogit一、项目搭建结构:gulimalltestssoclient
简介单系统登录多系统单点登录同域名不同站点不同子域不同域sessioncookie单点登录过程登录后请求过程退出登录对比简介SSO英文全称SingleSignOn单点登录是一种控制多个相关但彼此独立的
什么是单点登录一个账户在多个系统上实现单一用户的登录为什么用单点登录单点登录可以做到在不记录用户密码的情况下,实现不同系统之间的资源共享,自动登录不安全,单点登录,一处登录,处处都可用,不用做多余的
单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录单点注销两部分。单点登录相比于单系统登录sso需要
背景​在企业开发初期,由于企业呢,他的系统就几个,每一个系统都有自己的登录功能模块。但是啊,随着发展呢,企业就开发了各种系统,运维人员在维护的时候就要在不同的系统之间切换维护。这就太不方便啦,对用户来