欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

系统的讲解 - SSO单点登录

程序员文章站 2022-07-09 20:10:39
[TOC] 概念 SSO 英文全称 Single Sign On,单点登录。 在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。 比如:淘宝网(www.taobao.com),天猫网(www.tmall.com),聚划算(ju.taobao.com),飞猪网(www.fliggy. ......

目录

概念

sso 英文全称 single sign on,单点登录。

在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

比如:淘宝网(www.taobao.com),天猫网(www.tmall.com),聚划算(ju.taobao.com),飞猪网(www.fliggy.com)等,这些都是阿里巴巴集团的网站。在这些网站中,我们在其中一个网站登录了,再访问其他的网站时,就无需再进行登录,这就是 sso 的主要用途。

好处

用户角度

用户能够做到一次登录多次使用,无需记录多套用户名和密码,省心。

系统管理员角度

管理员只需维护好一个统一的账号中心就可以了,方便。

新系统开发角度

新系统开发时只需直接对接统一的账号中心即可,简化开发流程,省时。

技术实现

流程图

系统的讲解 - SSO单点登录

流程介绍

如果没这个介绍,看上图肯定是懵懵的。

系统a和系统b都是前后端分离的,比如前端框架用的 react / vue / angular,都是通过 npm 编译后独立部署的,前后端完全通过http接口的方式进行交互,也有可能前后端项目的域名都不一样。

sso认证中心不是前后端分离的,就是前端代码和后端代码部署在一个项目中。

为什么用这两种情况呢?

其实就是为了,在流程图上出现这两种情况,这样的清楚了,后期改成任何一种就都清楚了。

试想一下:

三个系统都是前后端分离的情况,流程图应该怎么调整?

三个系统都不是前后端分离的情况,流程图应该怎么调整?

对外接口

系统a和系统b:用户退出接口。

sso 认证中心:用户退出接口和token验证接口。

登录

如上述流程图一致。

系统a和系统b:使用token认证登录。

sso 认证中心:使用会话认证登录。

前后端分离项目,登录使用token进行解决,前端每次请求接口时都必须传递token参数。

退出

系统的讲解 - SSO单点登录

上图,表示的是从某一个系统退出的流程图。

退出,还可以从sso认证中心退出,然后调取各个系统的用户退出接口。

当用户再进行操作的时候,就会跳转到sso的登录界面。

token 生成方式

创建全局会话可以使用session,将session存储到redis中。

令牌的生成可以使用jwt。

php jwt参考地址:

当然还可以自定义token的生成方式。

小结

讲解了什么是sso,以及sso的用途与好处,同时根据流程图一步步进行梳理,基本上就可以实现了。

期间遇到任何问题,都可以关注公众号和我进行交流。

扩展

sso与oauth的区别

谈到sso很多人就想到oauth,也有谈到oauth想到sso的,在这里我简单的说一下区别。

通俗的解释,sso是处理一个公司内的不同应用系统之间的登录问题,比如阿里巴巴旗下有很多应用系统,我们只需要登录一个系统就可以实现不同系统之间的跳转。

oauth是不同公司遵循的一种授权方案,也是一种授权协议,通常都是由大公司提供,比如腾讯,微博。我们常用的qq登录,微博登录等,使用oauth的好处是可以使用其他第三方账号进行登录系统,减少了因用户懒,不愿注册而导致用户流失的风险。

现在一些支付业务也用oauth,比如微信支付,支付宝支付。

还有一些开放平台也用oauth,比如百度开放平台,腾讯开放平台。

sso与rbac的关系

如果企业有多个管理系统,现由原来的每个系统都有一个登录,调整为统一登录认证。

那么每个管理系统都有权限控制,吸取统一登录认证的经验,我们也可以做一套统一的rbac权限认证。

本文欢迎转发,转发请注明作者和出处,谢谢!