`
情情说
  • 浏览: 37710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单点登录与权限管理本质:单点登录介绍

 
阅读更多

 

继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前两篇介绍了session与cookieHTTP重定向 ,有了他们,浏览器就可以在多个系统间自动交互,实现自动登录。

该系列的完整写作计划,可见:系列概述

本篇介绍下单点登录,所谓单点登录,就是说用户只需在一个地方登录,访问其他相关系统时,不需要重复登录,隐式地自动登录,这样体验会比较好。

主要从以下几个方面介绍:

  • 一个常见的交互流程
  • 常见单点登录协议
  • 关键问题总结

一个常见的交互流程

我们项目中,使用CAS协议实现单点登录,下面就以项目中的实现为例,先来看下其交互流程,对其实现有个基本的了解。

有2个系统,系统A是「客服工作台」,主要给客服使用,可实时与来访用户及时聊天,解答用户的问题。系统B是「工单系统」,对于不能解答的问题,客服会创建一个工单,更高级别或相关度高的人会看到工单进行处理。

客服希望在登录系统A后,不需要手动登录系统B,需要一个「单点登录服务」,提供一个统一的登录验证,协调系统A、系统B的自动登录,定义该服务为服务S,其CAS协议的场景的流程如下:

CAS协议交互图

花了不少时间画上面的图,看着比较复杂,其实还好,希望大家花时间看下,如果前两篇文章真正理解了,这块就相对简单了。

重点总结下该流程:

  • 黑圆圈红字,标识cookie的生成和使用,ABCDE表示5个cookie,1表示生成,2表示使用;
  • 无论是系统A,还是系统B,如果没有jessionid cookie,都会跳转到服务S,如果携带了cookie1(登录成功后生成的cookie),不需要登录,会自动登录,如果没有携带cookie1,会跳转到登录页面,登录成功后会设置cookie1。
  • cookie1是保持浏览器和服务S的,表示用户已经登录过了;
  • cookie2、cookie4都是临时cookie,主要是将服务码带到系统A或系统B,拿到服务码后,通过后端请求服务S进行验证,验证过后,临时cookie就失效了,主要是为了安全考虑。
  • cookie3、cookie5和我们正常登录产生的jessionid一样,是各个子系统独有的cookie;

如果还有疑问,可在下面留言,我会第一时间回复。

常见单点登录协议

上面介绍的是CAS协议的一种,还有其他协议可实现单点登录,比如CAS官网列举的协议:
常见单点登录协议

这些协议有不同的适用场景,比如好多网站都支持使用QQ、微信、微博直接登录,只要你的QQ、微信、微博登录者,就不用重复登录,使用OAuth协议可比较好的实现这种场景。

后面会单独介绍这些协议。

关键问题总结

无论是哪一种协议,都需要一个中间系统,对验证和授权进行统一管理。另外,cookie的管理和安全问题需要重点考虑。

后面一篇会介绍下可能存在哪些安全问题,而对于安全问题如何解决,cookie和session具体如何管理,会在介绍每个具体协议的时候重点说明。

情情说

 

2
0
分享到:
评论

相关推荐

    java开发oa办公系统源码-ming:ming项目是基于SpringBoot2的一整套后端管理平台,提供整套公共微服务服务模块:集中权限管理

    项目是基于SpringBoot2的一整套后端管理平台,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、人事办公。旨在通过实战分享个人经验简洁高效,减少过渡封装,展现技术本质,以技术服务于业务。 ...

    c#WPF商业界面设计源码

    做网站的童鞋们对CAS,SSO这些关键字并不陌生吧,实质就是应用了SOA的理念,把一个网站平台的认证授权单独抽取出来独立成一个系统,其它业务网站的认证授权都以这个为基础,实现了单点的登录,授权。其实在企业级的...

    联合身份管理中的动态联合-研究论文

    近年来,许多组织已经开始选择FIM单点登录来专注于业务,而不是将用户凭据存储在自己的数据库中,这也为组织提供了经济上的优势,也为用户带来了便利。 但是,当前的FIM框架本质上是动态的以进行身份​​验证和授权...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    字符编码的区别与介绍 用户交互程序 if else流程判断 while 循环 while 循环优化版本 for 循环及作业要求 第2周 本节鸡汤 模块初识 pyc是什么 python数据类型 bytes数据类型 列表的使用 元组与购物车程序练习 ...

    java8集合源码分析-JavaArchitect:「Java架构师知识积累」

    SSO(单点登录) Single Sign On 即单点登录说的是用户登陆多个子系统的其中一个就有权访问与其相关的其他系统。 数据脱敏 分布式架构 CAP理论 Consistency(一致性) Availability(可用性) Partition Tolerance...

    网管教程 从入门到精通软件篇.txt

    Astound介绍文件 AST:Astound多媒体文件;ClarisWorks“助手”文件 Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4....

    超级有影响力霸气的Java面试题大全文档

    1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是...

    c51智能卡cos操作系统源代码-keil uv2

    其次,与那些常见的微机上的操作系统相比较而言,COS在本质上更加接近于临控程序、而不是一个通常所谓的真正意义上的操作系统,这一点至少在目前看来仍是如此。因为在当前阶段,COS所需要解决的主要还是对外部的命令...

    微信小程序源码 仿KFC下单小程序 (外卖点单小程序源码 )

    微信小程序源码 仿KFC下单小程序 (外卖点单小程序源码 ) 微信小程序源码 仿KFC下单小程序 (外卖点单小程序源码 ) 微信小程序源码 仿KFC下单小程序 (外卖点单小程序源码 ) 微信小程序源码 仿KFC下单小程序 ...

    B2C模式分销商城系统 标准版.rar

    4、对收款单、退款单、发货单、退货单进行管理,能查看到每个单据的详细信息,如订单号、支付方式、操作员、生成时间、收款方式、付款金额时间等,方便各分销商在出现问题时寻找问题来源 五、分销商客户管理系统 ...

    网络与信息安全知识点.总结.doc

    PKI 管理对象 证书、密钥、证书撤销列表 防火墙的基本技术 包过滤技术,代理服务技术,状态检测技术,自适应代理技术。 防止行为抵赖,属于什么的研究范畴 数字签名 完整的数字签名过程包括哪两个过程 签名过程、...

    数据库相关的知识点!

    有索引的时候:创建索引的本质就是创造额外的文件,查询时先去额外的文件找,定好位置,再去原始表直接查询,提高查询速度,但是增删改的速度依然慢,创建索引后必须命中索引才有效 索引的分类 1、普通索引:加速...

    网络安全支撑平台.docx

    SSP解决方案帮助用户解决以下的问题: 分散的管理增加管理成本和管理难度 作为一个新兴的、覆盖范围极大技术领域,信息安全可以划分为众多的细分领域,例如防火墙、入侵检测、漏洞扫描、认证和授权、加密、防病毒、...

    java 面试题 总结

    EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖...

    网络安全知识的组成.docx

    在计算机网络系统中,绝对的安全是不存在的,制定健全的安全管理体制是计算机网络安全的重要保证,只有通过网络管理人员与使用人员的共同努力,运用一切可以使用的工具和技术,尽一切可能去控制、减小一切非法的...

    Mercurial 权威指南

    新一代的版本控制工具本质上是点对点的。所有的这些系统都抛弃了对单个中央服务器 的依赖,允许用户将他们的版本控制数据发布到任何需要的地方。通过互联网的协作摆脱了 技术的限制,走向选择和审查。现代的工具可以...

    浅谈对大数据的理解.pdf

    速度(Velocity):指获得数据的速度,就是通过算法对数据的逻辑处理速度⾮常快,1秒定律,可从各种类型的数据中快速获得⾼价值的 信息,这⼀点也是和传统的数据挖掘技术有着本质的不同。; 价值(Value):指价值...

Global site tag (gtag.js) - Google Analytics