springboot实现单点登录_什么是单点登录,php是如何实现单点登录的

726e7692742de66f1973e923bcf1bbed.gif

文章来自:php中文网链接:https://www.php.cn/php-weizijiaocheng-429869.html
作者:中文网

商务合作:请加微信(QQ):2230304070

11f299cac86d7d95fff60753525a5ae5.png

视频教程分享

7ad1b66532584982a732efda1ed490cd.png

码农网:http://www.mano100.cn/rjyfk_url-url.html  ,升级终身会员即可查看网站所有视频教程。

11f299cac86d7d95fff60753525a5ae5.png

文章正文

7ad1b66532584982a732efda1ed490cd.png

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下几个:

1、存储信任

2、验证信任

只要解决了以上的问题,达到了开头讲得效果就可以说是SSO。最简单实现SSO的方法就是用Cookie,实现流程如下所示:

e2a00138b27c61893a322a690b7d214e.png

不难发现以上的方案是把信任存储在客户端的Cookie里,这种方法虽然实现方便但立马会让人质疑两个问题:

1、Cookie不安全

2、不能跨域免登

对于第一个问题一般都是通过加密Cookie来处理,第二个问题是硬伤,其实这种方案的思路的就是要把这个信任关系存储在客户端,要实现这个也不一定只能用Cookie,用flash也能解决,flash的Shared Object API就提供了存储能力。

一般说来,大型系统会采取在服务端存储信任关系的做法,实现流程如下所示:

0dd51261c746b8f0572c4863c5ce90e4.png

以上方案就是要把信任关系存储在单独的SSO系统(暂且这么称呼它)里,说起来只是简单地从客户端移到了服务端,但其中几个问题需要重点解决:

1、如何高效存储大量临时性的信任数据

2、如何防止信息传递过程被篡改

3、如何让SSO系统信任登录系统和免登系统

对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问。

对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证就可以辨别信息是否被改过。对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。

以上是文章全部内容,有需要学习与经验交流的友友或者进入微信交流群学习与交流的可以加小编为好友咱们一起学习,有问题一起交流,一起进步!前提是你是学技术的。

ccb30ac7f6b441e59d63a5b1ac9d6dc1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背景图处理,这是个好东西记录一下

背景图处理 rgba (),前3个是三原色,第四个参数是透明度转载于:https://www.cnblogs.com/ChineseLiao/p/7479207.html

python使用GUI(图形用户界面)

打开后: File→New File(Ctrl N) 转载于:https://www.cnblogs.com/ly123456/p/6269859.html

Altium Designer(AD24)新工程复用设计文件图文教程及视频演示

🏡《专栏目录》 目录 1,概述2,复用方法一视频演示2.1,创建工程2.2,复用设计文件 3,复用方法二视频演示4,总结 欢迎点击浏览更多高清视频演示 1,概述 本文简述使用AD软件复用设计文件…

Oracle 学习笔记(三)

oracle 表查询 oracle 表基本查询 在此,基于 scott 用户存在的 emp,dept 表演示学习。 emp 雇员表 clerk 员工 salesman 销售 manager 经理 analyst 分析师 president 总裁 mgr 上级的编号 hiredate 入职时间 sal 工资 comm 奖金 deptno 部…

html meta标签使用总结(转)

之前学习前端中&#xff0c;对meta标签的了解仅仅只是这一句。 <meta charset"UTF-8"> 但是打开任意的网站&#xff0c;其head标签内都有一列的meta标签。比如我博客的。 但是自己却很不熟悉&#xff0c;于是把meta标签加入了寒假学习计划的最前方。 简介 在查…

redhat6 删除mysql_Red Hat enterprise linux 6卸载默认安装的 mysql

因为Red Hat enterprise linux 6 自带了一个mysql&#xff0c;所以当你安装新的mysql时&#xff0c;就会提示错误如&#xff1a;error&#xff1a;Failed dependencies&#xff1a;MySQL conflicts with mysql-5.1.47-4.el6.i686rmp -qa mysql 可以看到安装的mysql于是将自带的…

Jenkins持续集成实践之java项目自动化部署

关于Linux安装Jenkins可以参考我的这篇博文Ubuntu16.04环境安装jenkins 1.安装部署插件 进入插件管理&#xff0c;并搜索该插件Deploy to container Plugin进行安装 &#xff0c;下载地址为&#xff1a;https://wiki.jenkins-ci.org/display/JENKINS/DeployPlugin 2.安装完后&a…

Java 多线程 笔记 转自http://www.cnblogs.com/lwbqqyumidi/p/3804883.html

多线程作为Java中很重要的一个知识点&#xff0c; 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期&#xff0c;首先看一下下面这张较为经典的图&#xff1a; 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点&#xff0c;Java中的多线程也就基…

c/c++连接mysql数据库设置及乱码问题(vs2013连接mysql数据库,使用Mysql API操作数据库)...

我的安装环境&#xff1a; (1)vs2013(32位版) (vs2013只有32位的 没有64位的&#xff0c;但是它可以编译出64位的程序) &#xff1b; (2)mysql-5.7.15(64位) vs2013中的设置&#xff08;按步骤来&#xff0c;顺序不要乱&#xff09; (1)首先在vs2013中新建一个控制台程序 Mysq…

调用接口返回500_公交卡余额查询接口开放使用啦!

API说明本API返回数据仅支持JSON格式且会对中文进 行unicode 编码&#xff0c;JSON格式返回数据基本格式如下&#xff1a;{"errCode": 0,"errMsg": "OK","data": {}}其中 errCode 表示请求状态&#xff0c;0表示请求成功&#xff0c; …

stark组件开发之组合搜索基本显示

数据的获取&#xff0c;上一篇&#xff0c;已经有了&#xff01;然后就是&#xff0c;如何进行展示的问题。到了展示这里&#xff0c;又有了新的问题&#xff0c; 因为从数据库&#xff0c;取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中&#xff0c;只是字符串。…

原生支付url参数错误_小程序支付

下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip &#xff1b;解压后放在extend 文件夹下&#xff0c;命名为wepay下载你的商户证书&#xff0c;放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.p…

枚举转中文,通过反射方法与描述的方式获取

示例&#xff1a; 有人为了显示中文&#xff0c;这样定义枚举吗&#xff1f; publicenum TimeOfDay { 上午, 下午, 晚上 }; 这样定义&#xff0c;很别扭&#xff0c;特别是在使用的时候&#xff0c; 比如&#xff0c;this.Time TimeOfDay.上午; 而…

Powershell-创建Module

1.找到默认module路径&#xff0c;ISE启动时自动加载默认领下的Module代码。 $env:PSModulePath 2.在其中一个默认路径下创建个文件夹&#xff0c;在文件夹下创建一个.psm1后缀文件&#xff0c;注意文件夹名字与文件名一样。 3.在.psm1文件中写入函数代码。 4.重启ISE自动加载m…

preserve log什么意思_一些有意思的JavaScript代码片段

Javascript是一门很灵活的语言&#xff0c;我们可以使用它动态地实现各种各样的功能。但是动态带来便利的同时&#xff0c;也存在一些令人费解的行为&#xff0c;稍不注意就会进入误区一个接着一个的坑。虽然我使用JavaScript的时间还不算长&#xff0c;也是遇到了一些有意思的…

冲刺第一天

任务板 未开始 进行中已完成 刘晓杰&#xff1a;找回密码界面 页面风格优化 刘晓杰&#xff1a;滑动欢迎界面/加载界面 预计时间&#xff1a;5.5h 冯晨&#xff1a;找回密码功能 发布动态界面 冯晨&#xff…

苹果内存取证工具volafox

2019独角兽企业重金招聘Python工程师标准>>> 苹果内存取证工具volafox volafox是一款针对苹果内存取证的专用工具。该工具使用Python语言编写。该工具内置了overlay data数据&#xff0c;用户可以直接分析苹果10.6-10.11的各种内存镜像文件。该工具提供28个子命令&a…

Flutter实战视频-移动电商-45.详细页_说明区域UI编写

45.详细页_说明区域UI编写 pages/details_page/details_expain.dart 详情页面引用组件 效果展示&#xff1a; 最终代码&#xff1a; import package:flutter/material.dart; import package:flutter_screenutil/flutter_screenutil.dart;class DetailsExplain extends Stateles…

win10java怎么运行_win10系统电脑怎样才可以运行Java开发

展开全部安装jdk&#xff0c;jdk下载地址&#xff1a;网页链接 根据电脑系统选择对应版本。32/64安装时候&#xff0c;安装路径可以默认&#xff0c;也可以自己指定。我个人喜欢安装到非系统盘&#xff0c;比如D盘。jdk安装后&#xff0c;会弹出jre安装界面&#xff0c;路径同样…

HTTP服务器的本质:tinyhttpd源码分析及拓展

已经有一个月没有更新博客了&#xff0c;一方面是因为平时太忙了&#xff0c;另一方面是想积攒一些干货进行分享。最近主要是做了一些开源项目的源码分析工作&#xff0c;有c项目也有python项目&#xff0c;想提升一下内功&#xff0c;今天分享一下tinyhttpd源码分析的成果。ti…