概念SSO英文全称SingleSignOn,单点登录。在多个应用系统中,您只需登录一次,即可访问其他相互信任的应用系统。例如:淘宝(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验证接口。登录与上面的流程图一致。SystemA和SystemB:使用token认证方式登录。SSOAuthenticationAuthority:使用session认证方式登录。前后端分离项目,登录通过token解决。前端每次请求接口都要传递token参数。退出上图为退出某系统的流程图。注销也可以从SSO认证中心注销,然后调用各系统的用户注销接口。当用户进行其他操作时,会跳转到SSO登录界面。创建全局session的token生成方法可以使用session将session存储在redis中。令牌生成可以使用JWT。PHPJWT参考地址:https://github.com/lcobucci/jwt当然你也可以自定义token的生成方式。总结说明什么是SSO,以及SSO的用途和好处,按流程图一步步梳理,基本可以实现。期间如果遇到什么问题,可以关注公众号与我交流。展开SSO和OAuth的区别很多人说到SSO就会想到OAuth,也有人说到OAuth就会想到SSO。这里我简单说一下区别。通俗地说,SSO就是处理公司内部不同应用系统之间的登录问题。比如阿里巴巴有很多应用系统。我们只需要登录一个系统就可以在不同的系统之间进行切换。OAuth是一种授权方案,是不同公司遵循的授权协议,通常由腾讯、微博等大公司提供。我们常用QQ登录、微博登录等方式,使用OAuth的好处是可以使用其他第三方账号登录系统,减少因用户懒惰、不愿意注册而流失用户的风险。现在一些支付服务也使用了OAuth,比如微信支付、支付宝支付。还有一些开放平台也使用了OAuth,比如百度开放平台、腾讯开放平台。SSO和RBAC的关系如果企业有多个管理系统,现在每个系统都有一个登录,调整为统一登录认证。那么各个管理系统都有权限控制,借鉴统一登录认证的经验,我们也可以做一套统一的RBAC权限认证。推荐阅读系统详解-PHPWEB安全防御系统详解-PHP缓存技术系统详解-PHP接口签名验证系统详解-PHP浮点数高精度运算一起学习
