系统的讲解 - SSO单点登录
概念
SSO 英文全称 Single Sign On,单点登录。
在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。
比如:淘宝网(www.taobao.com),天猫网(www.tmall.com),聚划算(ju.taobao.com),飞猪网(www.fliggy.com)等,这些都是阿里巴巴集团的网站。在这些网站中,我们在其中一个网站登录了,再访问其他的网站时,就无需再进行登录,这就是 SSO 的主要用途。
好处
用户角度
用户能够做到一次登录多次使用,无需记录多套用户名和密码,省心。
系统管理员角度
管理员只需维护好一个统一的账号中心就可以了,方便。
新系统开发角度
新系统开发时只需直接对接统一的账号中心即可,简化开发流程,省时。
技术实现
流程图

流程介绍
如果没这个介绍,看上图肯定是懵懵的。
系统A和系统B都是前后端分离的,比如前端框架用的 React / Vue / Angular,都是通过 NPM 编译后独立部署的,前后端完全通过HTTP接口的方式进行交互,也有可能前后端项目的域名都不一样。
SSO认证中心不是前后端分离的,就是前端代码和后端代码部署在一个项目中。
为什么用这两种情况呢?
其实就是为了,在流程图上出现这两种情况,这样的清楚了,后期改成任何一种就都清楚了。
试想一下:
三个系统都是前后端分离的情况,流程图应该怎么调整?
三个系统都不是前后端分离的情况,流程图应该怎么调整?
对外接口
系统A和系统B:用户退出接口。
SSO 认证中心:用户退出接口和token验证接口。
登录
如上述流程图一致。
系统A和系统B:使用token认证登录。
SSO 认证中心:使用会话认证登录。
前后端分离项目,登录使用token进行解决,前端每次请求接口时都必须传递token参数。
退出

上图,表示的是从某一个系统退出的流程图。
退出,还可以从SSO认证中心退出,然后调取各个系统的用户退出接口。
当用户再进行操作的时候,就会跳转到SSO的登录界面。
Token 生成方式
创建全局会话可以使用session,将session存储到redis中。
令牌的生成可以使用JWT。
PHP JWT参考地址:https://github.com/lcobucci/jwt
当然还可以自定义token的生成方式。
小结
讲解了什么是SSO,以及SSO的用途与好处,同时根据流程图一步步进行梳理,基本上就可以实现了。
期间遇到任何问题,都可以关注公众号和我进行交流。
扩展
SSO与OAuth的区别
谈到SSO很多人就想到OAuth,也有谈到OAuth想到SSO的,在这里我简单的说一下区别。
通俗的解释,SSO是处理一个公司内的不同应用系统之间的登录问题,比如阿里巴巴旗下有很多应用系统,我们只需要登录一个系统就可以实现不同系统之间的跳转。
OAuth是不同公司遵循的一种授权方案,也是一种授权协议,通常都是由大公司提供,比如腾讯,微博。我们常用的QQ登录,微博登录等,使用OAuth的好处是可以使用其他第三方账号进行登录系统,减少了因用户懒,不愿注册而导致用户流失的风险。
现在一些支付业务也用OAuth,比如微信支付,支付宝支付。
还有一些开放平台也用OAuth,比如百度开放平台,腾讯开放平台。
SSO与RBAC的关系
如果企业有多个管理系统,现由原来的每个系统都有一个登录,调整为统一登录认证。
那么每个管理系统都有权限控制,吸取统一登录认证的经验,我们也可以做一套统一的RBAC权限认证。
本文欢迎转发,转发请注明作者和出处,谢谢!
系统的讲解 - SSO单点登录的更多相关文章
- 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录
在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...
- e3mall商城的归纳总结10之freemarker的使用和sso单点登录系统的简介
敬给读者的话 本节主要讲解freemarker的使用以及sso单点登录系统,两种技术都是比较先进的技术,freemarker是一个模板,主要生成一个静态静态,能更快的响应给用户,提高用户体验. 而ss ...
- 多系统实现单点登录方案:SSO 单点登录
一.什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用 ...
- sso单点登录系统(解决session共享)
场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服 ...
- sso单点登录系统原理与实现
sso单点登录 1.认识并理解sso及其应用,并能根据其实现原理自行实现sso 没有使用sso单点登录的系统用户再访问同一个系统的不同模块都必须的登录 使用sso单点登录,用户只需要登录一次,并且可以 ...
- sso单点登录系统
sso单点登录概念 1.一处登录,处处登录.会单独做一个单点登录系统,只负责颁发token和验证token,和页面登录功能. 2.通过在浏览器cookie中放入token,和在redis中对应toke ...
- sso单点登录系统的压力测试
环境:vmware centos7.4 2cpu 2核心 工具:ab压力测试工具 测试对象:sso单点登录系统 电脑:win10 4核 项目环境:flask+uwsgi+nginx(uwsgi 2进程 ...
- 基于CAS实现SSO单点登录
1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...
- CAS实现SSO单点登录原理
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
随机推荐
- 前端Mahsup异步依赖方式不能做业务数据依赖
很久之前流行mashup方式做内容集成,之前为了IP定位的方便,引用了第三方的IP定位JS,然后根据其内容与服务器同步地址数据并写入Cookie,可是这种方式一旦,第三方的库反应缓慢时,就会出现大问题 ...
- GlitchBot -HZNU寒假集训
One of our delivery robots is malfunctioning! The job of the robot is simple; it should follow a lis ...
- Ubuntu 下命令安装 Java
1. 使用 java -version 查看系统是否存在 jdk. 2. ubuntu使用的是openjdk,所以我们需要先找到合适的jdk版本.在命令行中输入命令:apt-cache search ...
- c#学习笔记 day_one
C#学习笔记 day one Chapter 1 c#概述 1.1 c#概述 C#是微软设计的,简洁的,类型安全的,面向对象的语言.它以c/c++作为基础.它的开发环境是visual studio,最 ...
- python笔记:#007#变量
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
- Flex 对Xml对象操作
一.读取.xml文件() import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; ...
- JSON-RPC远程调用协议
1. JSON-RPC简介 2. 请求 3. 响应 4. 错误 4.1. 错误对象 4.2. 错误码 5. 批量调用 6. 示例 6.1. 列表形式参数 6.2. key-value形式参数 6.3. ...
- thinkphp框架实现删除上传的文件
public function article_delete(){ $article_id = I('get.article_id'); $model = M('zx_article'); $data ...
- SSM-SpringMVC-08:SpringMVC中以继承AbstractController的方式实现处理器
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- AbstractController实现了一些特殊功能,如继承了WebContentGenerator缓存控制 ...
- 一种转换Ipv6地址的方法
原CSDN博客不再更新维护. 本文介绍了一种将char* 类型的Ipv6地址转换成BYTE(unsigned char)或者in6_addr类型的方法. 说明:使用时需要下载Ipv6++.lib和Ip ...