摘要:本章主要讲解的是同域下单点登录分析。若登录失败,则返回原来的登录页面,并携带原来的,将原始的作为表单的隐藏属性。若没有,则证明该可能已经失效或是伪造的,则向客户端返回空字符串,否则返回查询到的信息。
本项目主要讲解的是单点登录系统的原理及其实现。
相关代码github链接。
本章主要讲解的是同域下单点登录分析。
流程图虽然看着复杂,但大家不要被吓到啦^ _ ^,请大家参照着流程路,听我下面细细道来~~
在github的代码中,我建立了三个项目,分别是服务端SSOServer、客户端SSOClient、以及两个集成了客户端的业务系统app1与aPP2。
将SSOServer,app1,app2启动后,开始SSO流程分析。
未登录访问业务系统app1的index页面:请求被客户端的Filter拦截。
由于没有token,客户端Filter控制其进行登录操作,并将原始的URL作为请求的参数。
进入服务端的UserLoginServlet进行登录操作。进入登录页时,获取URL中的参数——原始的origRUL,将其作为request对象的属性,方便后人获取,并且跳转到服务端的登录页面。
用户提交表单,服务端获取表单中信息后,到数据库中进行查询。若登录失败,则返回原来的登录页面,并携带原来的URL,将原始的URL作为表单的隐藏属性。
若登录成功则:
1.生成token。
2.将token与其对应的user放到全局唯一数据结构中,方便所有人进行获取。
3.给该用户设置一个cookie,值为token,用户在下次访问的时候就会携带此cookie,服务端也就可以通过该cookie对其身份进行验证。
4.判断原始URL是否为空,若不为空则跳转到原始URL页面,否则跳转到成功登录页面。
在用户要跳转到原始URL页面的时候,被客户端的Filter拦截,进行有无token的验证,由于经过登录操作在cookie中已经生成了token,故Filter发送Http通信请求服务端进行token有效性的验证,并将token作为请求参数。
服务端的TokenValidateServlet获取参数中的token后,到全局唯一数据结构中查找有无该token对应的user。若没有,则证明该token可能已经失效或是伪造的,则向客户端返回空字符串,否则返回查询到的user信息。
拦截器接收到服务端的返回信息,若为空字符串则返回原始登录页面,并携带原始URL,否则通过传来的用户信息,对user对象进行还原,方便下个人获取,拦截操作结束,成功进入了业务系统的index页面,并将request对象携带的user信息显示出来。
在通过了客户端的拦截器之后,业务系统还可以自定义拦截器,从而根据用户信息获取与本系统相关的用户业务信息,或者是对用户的权限进行进一步的验证,如:"猪猪"不可访问index页面等QAQ。
服务端从request对象的cookie中获取token的值,将这个token从全局数据结构中移除,并且将用户保存有该token的cookie设置为无效的。
关于代码部分,我将会在下一章节中进行详细解释~~~
大家多多关照!^ _ ^
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73605.html
摘要:不同域名不同端口不同协议,只要符合其中之一都算跨域请求同域当请求的符合域名端口协议都相同的时候,就是同域请求同域策略是浏览器内部实现的一种安全机制。 cookie如何设置?如何获取? php中向浏览器设置 cookie setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);注意:cookie只可以存字符串类型数据,而且在...
摘要:时间年月日星期三说明本文部分内容均来自慕课网。慕课网教学示例源码无个人学习源码第一章概述课程介绍及介绍课程目标认识并理解及其应用,并能根据其实现原理自行实现。 时间:2017年3月22日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:概述 1-...
摘要:前言山竹影响了我一整夜的睡眠,刚好住在广东这边,于是头脑发昏的我,出了今天的推文,还需指正,请一针见血。两个应用系统,同域跨域单点登录实现。 前言 山竹影响了我一整夜的睡眠,刚好住在广东这边,于是头脑发昏的我,出了今天的推文,还需指正,请一针见血。 刚好在了解公司开发平台的权限,于是画了张SSO单点登录的流程图,起床后写了篇MYSQL的手记后就开始敲代码了,终于在3小时后完成了。 两个...
摘要:动态生成随机下单页面的为了避免用户直接访问下单需要将动态化,用随机数作为参数,只能秒杀开始的时候才生成。该文件不被缓存的做法随机数。浅谈秒杀系统架构设计如何只允许,第一个提交的单进入订单系统。未超过秒杀商品总数,提交到子订单系统。 秒杀是电子商务网站常见的一种营销手段。 原则 不要整个系统宕机。 即使系统故障,也不要将错误数据展示出来。 尽量保持公平公正。 实现效果 秒杀开始前,...
阅读 3219·2021-11-23 09:51
阅读 3560·2021-11-09 09:46
阅读 3657·2021-11-09 09:45
阅读 2940·2019-08-29 17:31
阅读 1863·2019-08-26 13:39
阅读 2717·2019-08-26 12:12
阅读 3617·2019-08-26 12:08
阅读 2236·2019-08-26 11:31