SSO(单点登录)技术漫谈

本文深入探讨了单点登录(SSO)技术,解释了SSO的基本概念,如名词解释、优势及产品表现。文章指出,SSO能够提升用户效率和安全性,减少了密码管理的复杂性。通过反向代理和有端SSO的案例分析,展示了SSO的不同实现方式,并介绍了CAS等开源解决方案。此外,还讨论了SSO在实际应用中面临的挑战和客户需求,为读者提供了全面的SSO技术漫谈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 名词解释

2. 简介

3. SSO的优势

4. 产品表现

5. 客户需求

6. SSO技术漫谈

7. 基础组件

8. 反向代理SSO

9. 有端SSO

10. 参考资料


1. 名词解释

SSO:Single Sign On,简称SSO。翻译成中文就是单点登录。简单来讲就是,当用户在身份认证服务器(IAM)上登录一次以后,即可获得访问单点登录系统中其它(需要授权的)关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这也意味着,在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。这种方式减少了多次登录产生的时间消耗,提升了用户体验,也辅助了用户管理,是目前一种比较流行的身份认证体系。

单点登录:SSO的中文翻译。

单点登出:逻辑要完整的话,理论上有单点登录就有单点登出(注销)。某个用户在一个系统登出(退出/注销)了,认证中心需要把该用户的会话和cookie之类的数据全部清理(销毁),然后再通知各个业务系统,让它们都把该用户(如果有登录当前业务的话)的登录会话统统注销,这样才叫实现了了单点登出。某些实际应用里面,为了处理简单,以及用户体验更好,某个用户A在一个系统B登出,仅仅销毁用户A在B系统下的会话数据。

CAS:Central Authentication Service 中心认证服务(备注:这里不是指CAS无锁编程),耶鲁大学提出的,一个著名的开源SSO解决方案(框架),目前比较流行。使用CAS框架实现多个不同站点的单点登录的原理的关键就是使用一个认证服务器集中处理登陆的事务。是一个企业级的单点登录解决方案,在部署上面,CAS分为 CAS Server 和 CAS Client 其中 CAS Server 需要独立部署,CAS Client(这里的Client不是说的PC终端或者移动终端)而是CAS本身一种C/S架构,可认为每个接入的Web应用都是CAS的Client,CAS支持的客户端也比较多,包括Java,.Net,PHP,Perl,Apache,Ruby等等。

统一登录:也叫统一登录认证,其实和单点登录是一个意思,不过找不到统一登录的出处了,理解即可。

有端SSO:一般传统意义上的SSO都是无端的单点登录,所有的SSO逻辑都由前端(Web业务系统)和后端来完成。随着一些“巨无霸”终端产品的出现,基于终端的SSO方案也逐渐流行起来,其实也是原理是类似的。

IAM:Identity and Access Management,身份识别与访问管理。目前一般指统一的身份认证平台,集中管理企业员工和资产的身份和认证管理。

OpenSSO:之前是SUN的一款开源产品,自从SUN被Oracle收购之后,这个项目已经被Oracle关闭了(连官网:www.opensso.org都不可访问了),所以介绍资料极其稀少,可以去这里(https://www.oracle.com/technetwork/testcontent/opensso-ds-129530.pdf?ssSourceSiteId=otncn)看下介绍。

OpenAM:从架构上来看,原型(前身)应该是来自于OpenSSO。

2. 简介

回到Web1.0时代,这里有“世界上最好的语言”PHP,也有新贵JSP等等,每个企业都有大量的内部应用系统(譬如oa系统,hr系统,休假系统……),小的企业可能十几个应用,大的可能有成千上万个系统,而且很可能每个系统都还是不同的语言写的。

在日常工作中,人类为了能进入各个系统,必须得通过帐号和密码进行登录验证(身份验证)后,才能获取到跟自己身份相符的信息。那么问题来了,这么多的系统,每个系统都搞一个密码的话,大多数用户都要记忆不少于10个用户名和相应密码。为了便于记忆,很多人都在不同的站点使用相同的用户名和密码,甚至密码可能极其简单(否则真记不住啊!),虽然这样可以减少负担,但是同时也降低了安全性。

随着业务子系统越来越多,什么办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等。每个系统都使用独立的登录和验证机制,那么每天工作人员都要登录不同的系统进行办公。用户登录的频繁操作,降低了员工的工作效率,造成工作成本的浪费。而大量的密码和用户名的记忆时间长了也会出现问题,忘记密码或者混淆密码都会造成很大的麻烦。

基于以上原因,为用户提供一个畅通的登录通道变得十分重要。 单点登录(SSO)是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次,就可以访问多个系统,不需要记忆多个口令密码。单点登录使用户可以快速访问网络,从而提高工作效率,同时也能帮助提高系统的安全性。

备注:其实,类似讲解SSO原理的文章,尤其是CAS相关的介绍,网上已经汗牛充栋,本文在简单介绍原理的同时,主要是简单提出我们(iOA)的一些优势。另外,免费(开源)的SSO系统相比商业的SSO系统,在可用性,安全性和用户体验等方面肯定是有一些差距的,但是,也不用担心,基于开源组件发展出来的优秀系统也数不胜数。

图1 基本环节图(图片来之网上)

3. SSO的优势

  1. SSO可以帮助提高工作人员的生产效率,特别是在需要频繁的在多个内网业务之间切换访问时,简单点说&
### Single Sign-On Overview Single Sign-On (SSO) is a session and user authentication service where one set of login credentials can be used to access multiple applications. This reduces password fatigue from using different passwords for each application, minimizes administrative overhead by simplifying password management, and increases security since users need only remember a single complex password rather than many simpler ones. In SSO systems, when a user logs into one system or website, that identity information propagates through all connected services without requiring additional logins. The process leverages standards like Security Assertion Markup Language (SAML), OpenID Connect, OAuth, among others[^1]. For instance, the claim `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname` represents how specific attributes about the authenticated individual are shared between trusted parties within an SSO environment[^2]. ### Implementation Considerations Implementing SSO involves several critical components: - **Identity Provider (IdP):** Authenticates users and issues tokens. - **Service Providers (SPs):** Applications consuming these tokens issued by IdPs. - **Federation Protocols:** Standards such as SAML, WS-Federation, etc., facilitate secure communication between IdP and SPs. The architecture must support seamless integration with existing enterprise directories while ensuring robust security measures against unauthorized access attempts. Additionally, implementing multi-factor authentication enhances overall protection beyond just username/password combinations. ### Best Practices To maximize effectiveness and maintain high levels of security in deploying SSO solutions: - Ensure compatibility across diverse platforms including mobile devices. - Regularly update software versions along with patch installations promptly after release dates. - Conduct thorough risk assessments before integrating new third-party apps under the same umbrella. - Educate end-users on phishing threats targeting their primary account details which could compromise entire ecosystems once breached. ```python import requests from xml.etree import ElementTree def validate_saml_response(saml_response): """ Validates a received SAML response from Identity Provider Args: saml_response(str): Base64 encoded SAML Response Returns: bool: True if validation succeeds; False otherwise """ try: root = ElementTree.fromstring(requests.utils.unquote_plus(saml_response)) status_code = root.find('.//{urn:oasis:names:tc:SAML:2.0:protocol}StatusCode').attrib['Value'] return 'Success' == status_code except Exception as e: print(f"Validation failed due to {e}") return False ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值