什么是SOO?

简介:
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

SSO技术实现机制

当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

要实现SSO,需要以下主要的功能:

1、所有应用系统共享一个身份认证系统。

统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。 

2、所有应用系统能够识别和提取ticket信息

要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

另外:

1、单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中,如下图所示。事实上,只要统一认证系统,统一ticket的产生和效验,无论用户信息存储在什么地方,都能实现单点登录。

2、统一的认证系统并不是说只有单个的认证服务器

认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如:当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统2的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。

WEB-SSO的实现

用户在访问页面1的时候进行了登录,但是客户端的每个请求都是单独的连接,当客户再次访问页面2的时候,如何才能告诉Web服务器,客户刚才已经登录过了呢?浏览器和服务器之间有约定:通过使用cookie技术来维护应用的状态。Cookie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来,在它访问页面2的时候会把这个cookie也带上,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。Web-SSO完全可以利用Cookie结束来完成用户登录信息的保存,将浏览器中的Cookie和上文中的Ticket结合起来,完成SSO的功能。

为了完成一个简单的SSO的功能,需要两个部分的合作:

1、统一的身份认证服务。

2、修改Web应用,使得每个应用都通过这个统一的认证服务来进行身份效验。

本文转自kenty博客园博客,原文链接http://www.cnblogs.com/kentyshang/archive/2008/03/10/1098280.html如需转载请自行联系原作者


kenty

相关文章
|
Kubernetes Devops jenkins
ArgoCD 简明教程
ArgoCD 简明教程
2377 0
ArgoCD 简明教程
|
缓存 安全 数据建模
https证书是什么,怎么申请,以及作用是什么一篇文章告诉你
HTTPS超文本传输安全协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。所以说 的https证书也叫做ssl证书。
13364 0
|
9月前
|
easyexcel Java 数据挖掘
SpringBoot整合EasyExcel,Excel导入导出就靠它了
SpringBoot整合EasyExcel,Excel导入导出就靠它了
1357 0
|
12月前
|
监控 前端开发 JavaScript
接入 Sentry 实现前端的异常上报
前端监控现在已经是老生常谈的一个话题了,我之前的一次面试中就被问到了有没有做过前端监控,我回答没做过。。。然后就没有然后了。
682 0
|
缓存 JSON 负载均衡
http请求grpc服务的最终解决方案
所有的rpc协议遵守着一个万变不离其宗的定律:调用方与服务提供方有一套约定的报文解析格式。nodejs做代理,http报文组装成grpc报文,必须依赖.proto文件中定义的消息体
1639 0
http请求grpc服务的最终解决方案
|
存储 运维 监控
实战:使用Spring Boot Admin实现运维监控平台
我们知道,使用Actuator可以收集应用系统的健康状态、内存、线程、堆栈、配置等信息,比较全面地监控了Spring Boot应用的整个生命周期。但是还有一个问题:如何呈现这些采集到的应用监控数据、性能数据呢?在这样的背景下,就诞生了另一个开源软件Spring Boot Admin。下面就来介绍什么是Spring Boot Admin以及如何使用Spring Boot Admin搭建完整的运维监控平台。
130004 3
实战:使用Spring Boot Admin实现运维监控平台
|
存储 监控 网络安全
ES监视器Watcher详解
ES监视器Watcher详解
424 0
ES监视器Watcher详解
|
算法 C# C++
n阶贝塞尔曲线绘制(C/C#)
原文:n阶贝塞尔曲线绘制(C/C#) 贝塞尔是很经典的东西,轮子应该有很多的。求n阶贝塞尔曲线用到了 德卡斯特里奥算法(De Casteljau’s Algorithm) 需要拷贝代码请直接使用本文最后的例程,文章前面的大部分代码都不是最佳实践,是在编程过程中的摸索(走过的弯路),不过这些示范对笔者今后写算法启发很大。
3354 0
|
存储 机器学习/深度学习 缓存
APM-Elastic Stack 实战手册
应用程序性能管理(Application Performance Management)简称 APM。主要功能为监视和管理软件应用程序性能和可用性。
2446 0
APM-Elastic Stack 实战手册
|
消息中间件 运维 Kubernetes
Sentry(v20.12.1) K8S云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能高可用+可扩展可伸缩集群部署
Sentry(v20.12.1) K8S云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能高可用+可扩展可伸缩集群部署
871 0
Sentry(v20.12.1) K8S云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能高可用+可扩展可伸缩集群部署