ERP与SSO的恩怨情仇--第10篇

用日志记录“开源软件”的诞生

赤龙 ERP 开源地址:

点亮星标,感谢支持,与开发者交流 kzca2000

码云:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp

赤龙ERP官网:https://www.redragon-erp.com

为什么要用单点登录

首先大部分系统都不是孤立存在的,尤其是信息化系统。它们往往在一个大的平台上,由多个独立的系统组成。如果想访问多个系统,那么多次重复的进行登陆往往是不能接受的,那么一个统一的登陆入口就变得必不可少。这就是单点登录。

单点登录的特点是:

(1)统一的登陆入口和注销入口

(2)共享的用户信息数据

(3)可实现跨域、跨多应用、跨多浏览器的认证

(4)可实现较高的安全认证机制

(5)可扩展的授权机制

是否需要实现自己的SSO

是否需要实现自己的SSO呢?要回答这个问题。首先要明白SSO是如何实现的。那我们先来看看登陆如何实现,常见的做法是,输入用户名、密码、验证码,点击登陆验证用户名和密码是否正确,验证通过后获取用户信息,并跳转请求的页面。登陆状态和用户信息一般会存储在session、cookie或本地缓存;当然有时还会引入token验证登陆状态。

这个过程看似实现很简单,但里面有个致命的问题,不管session、cookie或本地缓存,都是存储在应用服务器本地的,这就使得统一认证、共享状态、跨域等多个问题变得不可能。下面我们来看看SSO是如何做的:

(1)当客户端发送请求访问应用的某一路径,应用会先判断当前用户本地的登陆状态,如果当前用户存在登陆状态则正常访问;如果用户没有登录则重定向到单点登录的服务端

(2)单点登录服务端会先通过cookie验证当前用户在服务端存储的登陆状态,如果存在则跳转回应用路径,并在客户端存储登陆状态。如果当前用户没有登录,则进行用户认证。(即输入用户名和密码的登陆动作)

(3)服务器认证成功后,会产生一个票据,带着这个票据并设置cookie跳转回客户端的接收路径

(4)客户端会在接收路径中重新访问服务端,去验证票据的合法性,成功后反馈用户的认证信息和相关数据给客户端

现在明白了单点登录是如何实现的,下面来回答本节开始的问题。要看使用场景,如果是互联网的项目我建议自己实现或优化此流程实现,但我现在研发的是一款开源ERP,在考虑安全性,可扩展性、时间成本等多方面的前提下,当然没有必要自己开发,拿成熟的产品优化即可。下面来看看我做了哪些优化。

CAS与Shiro的整合

CAS是Apache的开源SSO,解决的是认证的问题;Shiro是安全性框架,解决的是授权和会话管理。这也是【赤龙ERP】使用的两个技术。基本流程是:

(1)Cas先做用户认证,并获取用户信息(此过程通过SSL加密)。

(2)Shiro与Cas整合,在cas认证成功后交由shiro绑定认证状态、用户信息,并在shiro中获取用户权限,所有信息均存储在会话中。

(3)通过shiro配置实现对所有请求的拦截,并可以通过标签控制页面显示的内容(shiro的授权都是通过角色和权限两级完成的)。

【赤龙ERP】对CAS和Shiro做了哪些优化

其实不管是Cas和Shiro本来的功能上都有一些欠缺,在【赤龙ERP】中我做了相关优化。

(1)cas的登录页面的客户化,cas本身的登陆页面不好看,所以需要针对不同的场景做客户化。

(2)cas的登录页面更多数据的提交,本身登陆页面只接受用户名和密码的提交,不支持其他字段,但往往有时需要提交更多的字段,比如:账套。

(3)cas对于通过接口进行用户验证的功能比较欠缺,在此也做了弥补。

(4)cas记住密码的功能在和Shiro整合后存在一些问题,在此已解决。

(5)cas用户注销和Shiro整合后,存在一些情况下无法同步注销的问题,在此已解决。

(6)Shiro本身的会话存储在Ehcache本地缓存中,但整合Cas后会出现跨域、跨浏览器、跨应用的数据同步问题,优化后将会话存储在Redis中。

希望您读完本文可以帮助笔者进入【码云】或【GitHub】搜索“赤龙ERP”点击星标。等待着您的支持!

SSO单点登录可以自己实现吗?--开源软件诞生10的更多相关文章

  1. CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  2. CAS实现SSO单点登录原理(转)

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  3. SpringCloud系列——SSO 单点登录

    前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...

  4. 转 CAS实现SSO单点登录原理

    原文链接   http://m.blog.csdn.net/hxpjava1/article/details/74019017 CAS 简介 1. 1.1.  What is CAS ? CAS (  ...

  5. SSO单点登录的发展由来以及实现原理【转】

    单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的 1.web单系统应用 早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的, ...

  6. 一篇文章彻底弄懂CAS实现SSO单点登录原理

    1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web ...

  7. Java项目接入sso单点登录

    最近在落地cat(java开发的一款开源监控系统)接入公司的内部项目,其中有项需求是接入公司的sso单点登录系统.研究了公司之前java项目接入sso系统,大部分是采用spring框架,然后依赖spr ...

  8. 开发SSO单点登录需要注意的问题

      一.单点登录系统开发需要注意的问题     1.单点登录系统需要支持jsonp请求?    单点登录系统主要是向其他系统提供用户身份验证服务,因此需要提供对外接口,而外部系统通过接口访问时,必然涉 ...

  9. 基于CAS实现SSO单点登录

    1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...

随机推荐

  1. 【NOI2015】荷马史诗 - 哈夫曼树

    题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...

  2. IE9知识点汇总

    1.首先ie9不支持flex布局,只能使用float,要想支持ie低版本,两者要同时使用. 2.input框不支持placeholder属性,只能自己加span标签模拟出来,调整样式. 3.单个css ...

  3. AltiumDesigner20画图不求人10 | 提高AD20启动速度的方法六取消加入产品改善计划 | 视频教程 | 你问我答

    教程内容:AltiumDesigner20画图不求人系列,是电子芯原创的AltiumDesigner绘图技巧视频教程,每一个技巧只需要不到3分钟的时间就可以完成学习.前期经过AD19的画图不求人,帮助 ...

  4. 第2篇 Scrum 冲刺博客

    1.站立会议 照骗 进度 成员 昨日完成任务 今日计划任务 遇到的困难 钟智锋 无 确定客户端和服务器通信的形式 各成员的代码难以统一 庄诗楷 无 编写客户端UI 加入图片总是失败 易德康 无 马,车 ...

  5. DevExpress的WidgetView的使用介绍

    很多程序可能都会有一个首页综合展示系统的相关信息,如汇总信息,图表统计.待办业务.提醒信息等内容,在Web上可能叫做Dashboard仪表板,或者首页页面,不管哪种叫法,都是综合展示一些信息,提供一些 ...

  6. html中实现倒计时功能(setInterval,clearInterval)

    倒计时主要用到的知识点:1.设置时间间隔的setInterval可以被clearInterval取消 2.毫秒转换为时分格式 这个是效果图 下面是js中的函数 var shijian=3600; va ...

  7. OpenJ_Bailian - 2995-登山(两遍最长上升子序列+枚举顶点)

    五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号.同时队员们还有另一个登山习惯,就是不连续 ...

  8. 超详细,Windows系统搭建Flink官方练习环境

    如何快速的投入到Flink的学习当中,很多人在搭建环境过程中浪费了太多的时间.一套一劳永逸的本机Flink开发环境可以让我们快速的投入到Flink的学习中去,将精力用在Flink的原理,实战.这也对于 ...

  9. [业界方案] 用SOFATracer学习分布式追踪系统Opentracing

    [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 目录 [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 &am ...

  10. 按照BNF语法重新写就的JsonAnalyzer2

    本例源码:https://files.cnblogs.com/files/heyang78/JsonAnalyzer2-20200525-01.rar 自从按BNF重新书写了算术表达式解析(https ...