单点登录(SSO):原理、机制与传统单点登录的区别
一、单点登录(SSO)的实现原理
(一)身份验证票据(Ticket)机制
图片来源于网络,如有侵权联系删除
1、当用户首次访问一个应用系统(称为服务提供者,SP)时,会被重定向到单点登录系统(SSO系统),SSO系统负责对用户进行身份验证,例如通过用户名和密码、数字证书或者多因素认证等方式,如果验证成功,SSO系统会生成一个身份验证票据(Ticket),这个Ticket是一个加密的字符串,包含了用户的身份信息以及一些有效期等元数据。
2、SSO系统会将这个Ticket以某种方式(如通过重定向时在URL中传递或者作为HTTP请求头中的一个字段)发送回给最初请求的服务提供者,服务提供者收到Ticket后,会将其发送回SSO系统进行验证,SSO系统验证Ticket的有效性,包括检查签名、有效期等,如果验证通过,服务提供者就认为用户已经成功登录,可以为用户提供相应的服务。
(二)基于共享会话(Session)的机制
1、在一个多应用系统的环境中,SSO系统维护一个全局的会话(Session),当用户登录到SSO系统时,SSO系统创建一个全局会话,并在其中存储用户的登录状态和相关身份信息。
2、当用户访问其他服务提供者时,这些服务提供者可以与SSO系统共享这个全局会话,通过在服务提供者和SSO系统之间建立信任关系,服务提供者可以从SSO系统获取到用户在全局会话中的身份信息,从而确定用户已经登录,无需再次进行身份验证,这种方式依赖于安全的通信机制来确保会话信息的传递安全,如使用安全的网络协议(HTTPS)和加密技术。
(三)身份联合(Federation)机制
1、身份联合涉及到多个不同的身份提供商(IdP)和服务提供商(SP)之间的信任关系建立,在这种机制下,每个组织可能有自己的身份提供商,例如企业内部的活动目录(AD)可以作为身份提供商。
2、当用户在一个组织内部登录到其身份提供商后,如果该用户需要访问另一个组织的服务提供商的资源,身份提供商和服务提供商之间会通过预先建立的信任关系进行身份信息的交换,这种交换通常基于标准的协议,如SAML(安全断言标记语言)或者OpenID Connect,SAML协议中,身份提供商发送一个包含用户身份断言的SAML响应给服务提供商,服务提供商验证这个断言并基于断言中的信息确定用户的登录状态。
图片来源于网络,如有侵权联系删除
二、单点登录与SSO单点登录的区别
(一)概念范围
1、单点登录是一个更广泛的概念,它指的是用户在多个相关的系统中只需登录一次就可以访问所有系统的功能,它可以通过多种方式实现,包括一些简单的基于共享账号密码库的方式(虽然这种方式安全性较低)。
2、SSO单点登录是单点登录的一种具体实现方式,它强调使用标准化的、安全的技术和协议来实现单点登录的功能,SSO单点登录通常基于如SAML、OpenID Connect等成熟的身份验证和授权协议,这些协议定义了严格的消息格式、交互流程和安全机制,以确保在不同系统之间安全、可靠地进行身份验证和授权信息的传递。
(二)安全性
1、传统的单点登录可能存在安全风险,如果只是简单地共享账号密码库,一旦这个库被攻破,所有相关系统的安全性都会受到威胁,而且在账号密码共享的过程中,可能缺乏加密等安全措施。
2、SSO单点登录具有更高的安全性,以SAML - based SSO为例,SAML消息在传输过程中是加密和签名的,签名可以确保消息的完整性,防止消息在传输过程中被篡改;加密则保护消息内容不被窃取,SSO系统在身份验证过程中可以采用多因素认证等高级认证方式,进一步增强安全性。
(三)互操作性
图片来源于网络,如有侵权联系删除
1、传统单点登录在不同系统之间的互操作性较差,如果是基于自定义的、非标准的方式实现单点登录,当需要集成新的系统时,可能需要大量的定制开发工作,每个系统可能都需要针对特定的单点登录实现方式编写专门的接口和代码。
2、SSO单点登录具有良好的互操作性,由于基于标准的协议,如OpenID Connect是一种广泛应用于互联网的身份验证协议,许多不同类型的系统(如Web应用、移动应用等)都可以很容易地实现对OpenID Connect的支持,这意味着,采用SSO单点登录的系统可以更方便地与其他支持相同协议的系统进行集成,大大降低了集成成本和难度。
(四)用户体验
1、传统单点登录可能会因为缺乏统一的标准和优化的流程,导致用户体验不佳,在不同系统之间切换时可能会出现登录失败、需要重新输入部分信息等情况。
2、SSO单点登录提供了更流畅的用户体验,一旦用户在SSO系统中登录成功,在访问其他集成的服务提供商时,几乎可以无缝切换,不需要用户进行额外的复杂操作,减少了用户的登录等待时间和操作复杂度。
SSO单点登录是单点登录概念的一种高级、安全、互操作性强且用户体验良好的实现方式,它在现代企业和互联网应用的多系统集成环境中发挥着至关重要的作用。
评论列表