资讯专栏INFORMATION COLUMN

同域下单点登录分析 | 单点登录讲解(2)

Eirunye / 2137人阅读

摘要:本章主要讲解的是同域下单点登录分析。若登录失败,则返回原来的登录页面,并携带原来的,将原始的作为表单的隐藏属性。若没有,则证明该可能已经失效或是伪造的,则向客户端返回空字符串,否则返回查询到的信息。

本项目主要讲解的是单点登录系统的原理及其实现。

相关代码github链接。

本章主要讲解的是同域下单点登录分析。



同域下SSO分析与设计

流程图虽然看着复杂,但大家不要被吓到啦^ _ ^,请大家参照着流程路,听我下面细细道来~~



详细流程分析 项目结构

在github的代码中,我建立了三个项目,分别是服务端SSOServer、客户端SSOClient、以及两个集成了客户端的业务系统app1与aPP2。


SSO流程分析

将SSOServer,app1,app2启动后,开始SSO流程分析。

1)未登录访问业务系统

未登录访问业务系统app1的index页面:请求被客户端的Filter拦截。

由于没有token,客户端Filter控制其进行登录操作,并将原始的URL作为请求的参数。


2)用户执行登录操作

进入服务端的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信息显示出来。


3)业务系统增加自己的拦截器

在通过了客户端的拦截器之后,业务系统还可以自定义拦截器,从而根据用户信息获取与本系统相关的用户业务信息,或者是对用户的权限进行进一步的验证,如:"猪猪"不可访问index页面等QAQ。


4)单点退出

服务端从request对象的cookie中获取token的值,将这个token从全局数据结构中移除,并且将用户保存有该token的cookie设置为无效的。

关于代码部分,我将会在下一章节中进行详细解释~~~
大家多多关照!^ _ ^


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73605.html

相关文章

  • PHP的cookie与session的使用

    摘要:不同域名不同端口不同协议,只要符合其中之一都算跨域请求同域当请求的符合域名端口协议都相同的时候,就是同域请求同域策略是浏览器内部实现的一种安全机制。 cookie如何设置?如何获取? php中向浏览器设置 cookie setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);注意:cookie只可以存字符串类型数据,而且在...

    DTeam 评论0 收藏0
  • 慕课网_《Java实现SSO单登录》学习总结

    摘要:时间年月日星期三说明本文部分内容均来自慕课网。慕课网教学示例源码无个人学习源码第一章概述课程介绍及介绍课程目标认识并理解及其应用,并能根据其实现原理自行实现。 时间:2017年3月22日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:概述 1-...

    flyer_dev 评论0 收藏0
  • “山竹”影响出来的多应用单登录

    摘要:前言山竹影响了我一整夜的睡眠,刚好住在广东这边,于是头脑发昏的我,出了今天的推文,还需指正,请一针见血。两个应用系统,同域跨域单点登录实现。 前言 山竹影响了我一整夜的睡眠,刚好住在广东这边,于是头脑发昏的我,出了今天的推文,还需指正,请一针见血。 刚好在了解公司开发平台的权限,于是画了张SSO单点登录的流程图,起床后写了篇MYSQL的手记后就开始敲代码了,终于在3小时后完成了。 两个...

    xiangzhihong 评论0 收藏0
  • 浅谈秒杀系统架构设计

    摘要:动态生成随机下单页面的为了避免用户直接访问下单需要将动态化,用随机数作为参数,只能秒杀开始的时候才生成。该文件不被缓存的做法随机数。浅谈秒杀系统架构设计如何只允许,第一个提交的单进入订单系统。未超过秒杀商品总数,提交到子订单系统。 秒杀是电子商务网站常见的一种营销手段。 原则 不要整个系统宕机。 即使系统故障,也不要将错误数据展示出来。 尽量保持公平公正。 实现效果 秒杀开始前,...

    maochunguang 评论0 收藏0
  • SSO单登录原理

    摘要:经纪人给被用于进一步请求的电子身份存取。基于网关基于,安全断言标记语言的出现大大简化了,并被批准为的执行标准。 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一 SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统 SSO 主要实现方式 共享 cookies 基于共享同域的...

    curried 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<