单点登录(SSO)的三种实现方式
一、基于Cookie的单点登录
1、原理
图片来源于网络,如有侵权联系删除
- 当用户在一个应用(例如应用A)登录成功后,服务器会在用户的浏览器端设置一个特定的Cookie,这个Cookie包含了用户登录的相关信息,如用户标识等,当用户访问其他相关应用(如应用B)时,应用B会检查浏览器中的这个Cookie,如果存在且有效,应用B就可以根据Cookie中的信息识别出用户已经登录,从而实现单点登录。
- 在一个企业内部有多个业务系统,如办公自动化系统(OA)和企业资源计划系统(ERP),当用户登录OA系统后,OA服务器在用户浏览器设置一个名为“SSO - Token”的Cookie,当用户再访问ERP系统时,ERP系统的服务器读取这个Cookie,如果发现其中的标识信息表明是已登录的合法用户,就直接让用户进入系统而无需再次登录。
2、优点
简单易用:实现相对简单,不需要复杂的架构调整,对于小型企业或者业务关联度不是特别高的应用集成场景比较适用。
用户体验好:用户无需在不同应用间频繁输入用户名和密码,提高了操作效率。
3、缺点
安全性风险:Cookie可能会被窃取或者篡改,如果攻击者获取了用户的Cookie,就可能冒充用户身份登录系统,为了提高安全性,需要对Cookie进行加密、设置合适的过期时间和安全属性(如HttpOnly属性防止脚本访问Cookie)。
跨域问题:在不同域名下,浏览器默认的安全策略会限制Cookie的共享,一个应用在domainA.com,另一个在domainB.com,直接共享Cookie会存在困难,需要通过一些特殊的技术手段,如设置P3P头信息(在一定程度上解决跨域Cookie共享的隐私问题)或者采用JSONP等跨域技术来辅助实现。
4、适用场景
- 适用于同域名下或者信任关系较高、安全要求不是顶级严格的内部系统集成,一个公司内部的多个部门级应用,都在公司的主域名下或者二级域名下,并且应用之间的交互主要在企业内部网络环境中。
二、基于SAML(安全断言标记语言)的单点登录
1、原理
图片来源于网络,如有侵权联系删除
- SAML是一种基于XML的开放标准,用于在不同的安全域之间交换认证和授权数据,在单点登录场景中,当用户请求访问一个服务提供商(SP)的应用时,SP会将用户重定向到身份提供商(IdP)进行认证,IdP对用户进行身份验证后,会生成一个包含用户身份信息的SAML断言,并将其发送回SP,SP根据这个断言来确定用户是否可以访问其资源。
- 在一个高校的信息化环境中,学校的统一身份认证中心(IdP)负责对学生和教职工进行身份验证,当学生访问学校的图书馆系统(SP)时,图书馆系统将学生重定向到统一身份认证中心,认证中心验证学生身份后,发送包含学生学号、姓名、所属院系等信息的SAML断言给图书馆系统,图书馆系统根据这些信息确定是否允许学生访问相关资源。
2、优点
跨域性好:能够很好地解决不同安全域之间的单点登录问题,可以在不同组织、不同域名之间实现单点登录,非常适合企业间的业务合作或者大型企业内部多个独立安全域的集成。
安全性高:SAML断言可以进行数字签名和加密,保证了数据的完整性、真实性和保密性。
3、缺点
复杂度高:实现过程涉及到多个系统之间的交互,需要对SAML标准有深入的理解,包括SAML断言的结构、加密解密、签名验证等操作,开发和维护成本相对较高。
对现有系统有侵入性:需要对现有的身份认证系统和应用系统进行一定的改造,以支持SAML协议的交互。
4、适用场景
- 适用于企业间的B2B合作,如供应商与企业之间的业务系统集成,或者大型企业内部不同部门且安全域相对独立的应用单点登录集成,如企业内部的研发部门、财务部门等各自有独立的安全管理体系,但又需要单点登录功能。
三、基于OAuth(开放授权)的单点登录
1、原理
图片来源于网络,如有侵权联系删除
- OAuth主要用于授权,在单点登录场景中,用户通过一个身份提供商(如社交媒体平台或专门的单点登录服务提供商)登录,身份提供商在用户授权后,会向目标应用提供一个访问令牌,目标应用使用这个访问令牌来获取用户的基本信息,从而实现登录,很多网站允许用户使用微信、QQ等账号登录,当用户点击使用微信登录时,网站会将用户重定向到微信的授权页面,用户同意授权后,微信会返回一个访问令牌给网站,网站根据这个令牌获取用户在微信上的昵称、头像等信息,完成用户的登录操作。
2、优点
广泛适用性:由于很多大型互联网平台(如Google、Facebook、腾讯等)都支持OAuth协议,所以它被广泛应用于第三方登录场景,能够方便地集成到各种应用中。
用户选择性高:用户可以选择自己信任的身份提供商进行登录,并且可以随时撤销对某个应用的授权。
3、缺点
安全性依赖第三方:应用的安全性在一定程度上依赖于身份提供商的安全措施,如果身份提供商出现安全漏洞,可能会影响到使用其进行单点登录的所有应用。
有限的用户信息获取:应用只能获取身份提供商允许的用户信息,对于一些需要更详细用户信息的应用可能无法满足需求。
4、适用场景
- 适用于互联网应用的第三方登录,如电商网站允许用户使用支付宝账号登录,或者新闻类应用允许用户使用微博账号登录等场景,主要是为了方便用户登录,提高用户注册和登录的转化率,同时也利用了大型互联网平台的用户信任基础。
评论列表