当前位置:网站首页>通俗易懂单点登录SSO
通俗易懂单点登录SSO
2022-07-07 05:02:00 【不凡~】
一、cookie及session
在了解之前,我们先了解以下知识:「cookie及session」
具体看这篇介绍
二、普通的登录认证机制
普通登录认证机制的过程:
- 用户访问一个系统,这个系统需要登录,于是向后台服务器发送登录请求;
- 数据库中根据用户传来的用户名和密码进行判断,判断成功后完成登录认证,登录认证成功,服务器把用户的登录信息写入 session;
- 服务器为该用户生成一个 cookie,返回而写入浏览器;
- 下一次,当用户再次访问这个系统的时候,请求中会带上这个 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的具体流程(以下步骤与图中的步骤一致)
- 用户首次访问系统 xiadan,xidan 系统是需要登录的,但用户现在没有登录;由于用户没有登录,所以 xiadan 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址,同时 url 的 query 中通过参数指明登录成功后,回跳到 xiadan 的页面;
- SSO 服务器判断用户未登录,给用户显示统一登录界面。用户在 SSO 的页面上进行填写用户名和密码,进行登录操作;
- SSO 系统进行认证成功后,SSO 服务器创建授权令牌(token),同时返回一个 http 重定向,浏览器重定向到系统 xiadan:www.xiadan.com。此时重定向的 url 中携带着 SSO 服务器生成的授权令牌。
- 系统 xiadan 拿到授权令牌,向 SSO 服务器发送请求,校验令牌是否有效;
- 验证成功后,xiadan 服务器知道用户已经在 SSO 登录了,于是 xiadan 服务器构建用户登录 session,记为 xiadan session,并将 cookie 写入浏览器;
- 之后用户访问 zhifu,zhifu系统没有登录;由于用户没有登录,所以 zhifu 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址;
- 浏览器询问用户在 SSO 中的登录状态,SSO 服务器根据授权令牌判断用户已经在 SSO 登录过了,SSO 服务器返回一个http重定向,携带授权令牌,跳转到系统 zhifu:www.zhifu.com;
- 系统 zhifu 拿到授权令牌,向 SSO 服务器发送请求,校验令牌是否有效,验证成功后,zhifu 服务器知道用户已经在 SSO 登录了,于是 zhifu 服务器构建用户登录 session,记为 zhifu session,并将 cookie 写入浏览器。
这样,zhifu 系统不需要再输入用户名和密码进行登录流程,就已经是登录了。之后当用户访问 xiadan 或者 zhifu 后,直接会携带 xiadan cookie / zhifu cookie,就不用再向 SSO 确认了。
边栏推荐
- Téléchargement des données de conception des puces
- buureservewp(2)
- Zsh shell adds automatic completion and syntax highlighting
- Linux server development, MySQL index principle and optimization
- Linux server development, detailed explanation of redis related commands and their principles
- JSON data flattening pd json_ normalize
- Yugu p1020 missile interception (binary search)
- 复杂网络建模(二)
- Explore Cassandra's decentralized distributed architecture
- [UVM practice] Chapter 2: a simple UVM verification platform (2) only driver verification platform
猜你喜欢
Linux server development, MySQL transaction principle analysis
LeetCode简单题之判断一个数的数字计数是否等于数位的值
[CV] Wu Enda machine learning course notes | Chapter 8
Content of string
Figure out the working principle of gpt3
微信小程序基本组件使用介绍
Network learning (I) -- basic model learning
UnityHub破解&Unity破解
让Livelink初始Pose与动捕演员一致
Most elements
随机推荐
探索干货篇!Apifox 建设思路
王爽 《汇编语言》之寄存器
Linux server development, redis source code storage principle and data model
QT learning 26 integrated example of layout management
微信小程序基本组件使用介绍
【数字IC验证快速入门】12、SystemVerilog TestBench(SVTB)入门
Linux server development, MySQL transaction principle analysis
JS cross browser parsing XML application
Few shot Learning & meta learning: small sample learning principle and Siamese network structure (I)
Chip design data download
Network learning (I) -- basic model learning
Relevant data of current limiting
Visualization Document Feb 12 16:42
[quick start of Digital IC Verification] 15. Basic syntax of SystemVerilog learning 2 (operators, type conversion, loops, task/function... Including practical exercises)
数据库实时同步利器——CDC(变化数据捕获技术)
Empire CMS collection Empire template program general
复杂网络建模(三)
The element with setfieldsvalue set is obtained as undefined with GetFieldValue
Thinkcmf6.0安装教程
Record a stroke skin bone error of the skirt