当前位置: 首页 > news >正文

spring cloud微服务分布式云架构-单点登录(SSO)

单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即 通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。 Spring Cloud大型企业分布式微服务云架构源码请加一七九一七四三三八零

目前的企业应用环境中,往往有很多的应用系统,如办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等等。这些应用系统服务于企业的信息 化建设,为企业带来了很好的效益。但是,用户在使用这些应用系统时,并不方便。用户每次使用系统,都必须输入用户名称和用户密码,进行身份验证;而且应用 系统不同,用户账号就不同,用户必须同时牢记多套用户名称和用户密码。特别是对于应用系统数目较多,用户数目也很多的企业,这个问题尤为突出。问题的原因 并不是系统开发出现失误,而是缺少整体规划,缺乏统一的用户登录平台,使用SSO技术可以解决以上这些问题。

一、使用SSO的好处主要有

(1)方便用户

用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码。单点登录平台能够改善用户使用应用系统的体验。

(2)方便管理员

系统管理员只需要维护一套统一的用户账号,方便、简单。相比之下,系统管理员以前需要管理很多套的用户账号。每一个应用系统就有一套用户账号,不仅给管理上带来不方便,而且,也容易出现管理漏洞。

(3)简化应用系统开发

开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序。

二、实现SSO的技术主要有

(1)基于cookies实现,需要注意如下几点:如果是基于两个域名之间传递sessionid的方法可能在windows中成立,在 unix&linux中可能会出现问题;可以基于数据库实现;在安全性方面可能会作更多的考虑。另外,关于跨域问题,虽然cookies本身不跨 域,但可以利用它实现跨域的SSO。

(2)Broker-based(基于经纪人),例如Kerberos等;

这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步请求的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证 提供一个公共和独立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(凭证库思想)等。

(3)Agent-based(基于代理)

在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序需要设计有不同的功能。比如, 它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。代理被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。例如 SSH等。

(4)Token-based,例如SecurID、WebID、

现在被广泛使用的口令认证,比如FTP,邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。

(5)基于网关

Agent and Broker-based,这里不作介绍。

(6)基于安全断言标记语言(SAML)实现,SAML(Security Assertion Markup Language,安全断言标记语言)的出现大大简化了SSO,并被OASIS批准为SSO的执行标准。开源组织OpenSAML 实现了 SAML 规范,可参考http//www.opensaml.org。

三、SUN SSO技术

SUN SSO技术是Sun Java System Access Manager产品中的一个组成部分。

Sun 的新身份管理产品包括Sun Java System Identity Manager、Sun Java System Directory Server Enterprise Edition 和 Sun Java System Access Manager,以上三者为Sun Java Identity Management Suite (身份识别管理套件)的组成部分,它们与Sun Java Application Platform Suite、Sun Java Availability Suite、Sun Java Communications Suite、Sun Java Web Infrastructure Suite组成Java ES。具有革新意义的这一系列产品提供端到端身份管理,同时可与 60 多种第三方资源和技术实现互操作,集成产品可以从SUN公司网站下载,一般以Agent软件方式提供,是业内集成程序最高、最为开放的身份管理解决方案之 一。

在Sun 的新身份管理产品中,Sun Java System Access Manager是基中的一个重要组成部分,Java Access Manager基于J2EE架构,采用标准的API,可扩展性强,具有高可靠性和高可用性,应用是部署在Servlets容器中的,支持分布式,容易部署 且有较低的TCO。通过使用集中验证点、其于角色的访问控制以及 SSO,Sun Java System Access Manager 为所有基于 Web 的应用程序提供了一个可伸缩的安全模型。它简化了信息交换和交易,同时能保护隐私及重要身份信息的安全。

四、CAS 介绍

CAS(Central Authentication Service),是耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,支持代理功能。CAS系统在各个大学如耶鲁大学、加州大学、剑桥大学、香港科技大学等得到应用。

Spring Framework的Acegi安全系统支持CAS,并提供了易于使用的方案。Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。Acegi安全系统在国内外得到了广泛的应用, 有着良好的社区环境。

CAS 的设计目标

(1)为多个Web应用提供单点登录基础设施,同时可以为非Web应用但拥有Web前端的功能服务提供单点登录的功能;

(2)简化应用认证用户身份的流程;

(3)将用户身份认证集中于单一的Web应用,让用户简化他们的密码管理,从而提高安全性;而且当应用需要修改身份验证的业务逻辑时,不需要到处修改代码。

CAS 的实现原理

CAS(Central Authentication Server)被设计成一个独立的Web应用。实现原理非常简单。

CAS创建一个位数很长的随机数(ticket)。CAS把这个ticket和成功登录的用户以及用户要访问的service联系起来。例如,如果用户 peon重定向自service S,CAS创建ticket T,这个ticket T允许peon访问service S。这个ticket是个一次性的凭证;它仅仅用于peon和仅仅用于service S,并且只能使用一次,使用之后马上会过期,即ticket通过验证,CAS立即删除该ticket,使它以后不能再使用。这样可以保证其安全性。

关于ST,在取一个ST时,即使用delete Ticket(ticketId)同时将一次性的ST删除;而对于TGT或PT,则通过reset Timer(ticketId)以更新TGT或PT的时间。在CAS服务端返回的ST中只能得出用户名。

另外,CAS3.0版本也已经发布了,现在最新的版本是3.03,希望CAS3.0在向下兼容的同时,更能向我们提供一些新东西。

转载于:https://juejin.im/post/5c92f1fef265da6120098ad9

相关文章:

  • 仓管云——企业云erp功能有哪些?
  • jvm在什么时候进行进行垃圾回收,在什么时候进行扩大内存
  • 第四周作业1
  • PowerShell Switch判断语句示例
  • Android ViewPager实现循环轮播图
  • 如何在 Kubernetes 中对无状态应用进行分批发布
  • django admin后台的简单使用
  • 详解Apache配置多个监听端口和不同的网站目录
  • 深度优先遍历 和 广度优先遍历
  • 如何利用 Webshell 诊断 EDAS Serverless 应用
  • web接口中BigDecimal值比较不相等
  • Cable:360实现的新虚拟网络架构
  • ubuntu添加普通用户,并解决远程登录
  • 扫描自定义注解并在spring容器中注入自定义bean
  • Mac osx 系统安装 eclipse
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • chrome扩展demo1-小时钟
  • css的样式优先级
  • Laravel核心解读--Facades
  • node和express搭建代理服务器(源码)
  • Python爬虫--- 1.3 BS4库的解析器
  • React的组件模式
  • 动态规划入门(以爬楼梯为例)
  • 回流、重绘及其优化
  • 聊聊redis的数据结构的应用
  • 设计模式走一遍---观察者模式
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • ​Spring Boot 分片上传文件
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #100天计划# 2013年9月29日
  • #FPGA(基础知识)
  • #Linux(make工具和makefile文件以及makefile语法)
  • #大学#套接字
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2)STL算法之元素计数
  • (C语言)fgets与fputs函数详解
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (学习日记)2024.02.29:UCOSIII第二节
  • (译) 函数式 JS #1:简介
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转) Face-Resources
  • (转)c++ std::pair 与 std::make
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .chm格式文件如何阅读
  • .NET delegate 委托 、 Event 事件
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET委托:一个关于C#的睡前故事
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /etc/sudoers (root权限管理)