一、单点登录
单点登录(英语:Single sign-on,缩写为 SSO),一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一退出(single sign-off)就是指,只需要单一的退出动作,就可以结束对于多个系统的访问权限。
单点登录 (SSO) 是一种身份验证方案,允许用户使用单个 ID 登录到多个相关但独立的软件系统中的任何一个。
真正的单点登录允许用户登录一次并访问服务,而无需重新输入身份验证因素。
它不应与相同登录(目录服务器身份验证)相混淆,后者通常通过使用轻量级目录访问协议 (LDAP) 和存储在(目录)服务器上的 LDAP 数据库来实现。
可以使用 cookie 通过 IP 网络实现简单版本的单点登录,但前提是站点共享一个公共 DNS 父域。
为清楚起见,区分目录服务器身份验证(相同登录)和单点登录:目录服务器身份验证是指需要对每个应用程序进行身份验证但使用来自目录服务器的相同凭据的系统,而单点登录是指通过将身份验证令牌无缝传递到配置的应用程序,单个身份验证提供对多个应用程序的访问的系统。
相反, single sign-off 或 single log-out(SLO) 是单次注销操作终止对多个软件系统的访问的属性。
由于不同的应用程序和资源支持不同的身份验证机制,单点登录必须在内部存储用于初始身份验证的凭据,并将它们转换为不同机制所需的凭据。
其他共享身份验证方案(例如 OpenID 和 OpenID Connect )提供其他服务,这些服务可能需要用户在登录资源期间做出选择,但如果这些其他服务(例如用户同意),则可以配置为单点登录被禁用。 [4] 越来越多的联合社交登录(如 Facebook Connect)确实要求用户在首次注册新资源时输入同意选项,因此在最严格的意义上并不总是单点登录。
二、优点
使用单点登录的好处包括:
- 降低访问第三方网站的风险(因为用户密码不在外部存储或管理)。
- 减少因不同的用户名和密码组合而带来的密码疲劳。
- 减少为相同的身份重新输入密码所花费的时间。
- 因减少与密码相关的调用IT服务台的次数而降低IT成本[1]。
- SSO为所有其它应用程序和系统,以集中的验证服务器提供身份验证,并结合技术以确保用户不必频繁输入密码。
- 更简单的管理。 SSO 相关任务作为正常维护的一部分透明地执行,使用用于其他管理任务的相同工具。
- 更好的行政控制。所有网络管理信息都存储在单个存储库中。这意味着每个用户的权利和特权都有一个单一的权威列表。这允许管理员更改用户的权限,并知道结果将在整个网络范围内传播。
- 提高了用户的工作效率。用户不再因多次登录而陷入困境,也不再需要记住多个密码才能访问网络资源。这对服务台人员也有好处,他们需要处理更少的忘记密码请求。
- 更好的网络安全。消除多个密码还可以减少安全漏洞的常见来源——用户记下他们的密码。最后,由于网管信息的整合,管理员可以很确定的知道,当他禁用一个用户的账号时,这个账号就被完全禁用了。
- 异构网络的整合。通过加入不同的网络,可以整合管理工作,确保始终如一地执行管理最佳实践和公司安全策略。
SSO 共享所有其他应用程序和系统用于身份验证目的的集中式身份验证服务器,并将其与技术相结合以确保用户不必多次主动输入其凭据。
[1] - 单点登录的好处
三、批评
一些人使用缩减登录 (RSO) 一词来反映这样一个事实,即单点登录在解决企业中不同级别的安全访问需求方面不切实际,因此可能需要多个身份验证服务器。
由于单点登录在用户最初通过身份验证(“城堡的钥匙”)后提供对许多资源的访问,因此在凭据可供其他人使用并被滥用的情况下,它会增加负面影响。因此,单点登录需要更多地关注用户凭据的保护,并且理想情况下应该与智能卡和一次性密码令牌等强大的身份验证方法结合使用。
单点登录也使身份验证系统变得非常关键;它们的可用性丧失可能导致拒绝访问 SSO 下统一的所有系统。 SSO 可以配置会话故障转移功能,以维持系统运行。尽管如此,系统故障的风险可能使单点登录对于必须始终保证访问的系统(例如安全系统或车间系统)来说是不可取的。
此外,利用社交网络服务(例如 Facebook)的单点登录技术的使用可能会使第三方网站在图书馆、学校或出于生产力原因而阻止社交媒体网站的工作场所内无法使用。
四、隐私
正如最初在 Kerberos 和 SAML 中实现的那样,单点登录并没有给用户任何关于将他们的个人信息发布到用户访问的每个新资源的选择。这在单个企业中运行良好,例如发明 Kerberos 的麻省理工学院,或者所有资源都是内部站点的大公司。然而,随着 Active Directory 联合服务等联合服务的激增,用户的私人信息被发送到不受从用户那里收集数据的企业控制的附属站点。由于隐私法规现在随着 GDPR 等立法而收紧,像 OpenID Connect 这样的新方法开始变得更具吸引力;比如MIT,Kerberos的鼻祖,现在支持OpenID Connect。
五、电子邮件地址
单点登录理论上可以在不向依赖方(凭据消费者)透露电子邮件地址等身份信息的情况下工作,但许多凭据提供者不允许用户配置将哪些信息传递给凭据消费者。自 2019 年起,Google 和 Facebook 登录不要求用户与凭据消费者共享电子邮件地址。 iOS 13 中引入的“使用 Apple 登录”允许用户在每次注册新服务时请求一个唯一的中继电子邮件地址,从而降低凭据消费者链接帐户的可能性。
六、安全
2012年3月,一篇研究论文报告了对社交登录机制的一项广泛研究。该文作者发现了8项严重的逻辑漏洞,出现在备受瞩目的ID提供者和依赖方网站中,如OpenID(包括Google账户和PayPal Access)、Facebook、Janrain、Freelancer.com、FarmVille和Sears。由于研究人员在公布所发现的缺陷之前,就通知了各ID提供者和依赖方网站,因此这些漏洞已经被及时堵上,因而并没有出现安全隐患的报告[2]。
[2] - 通过Facebook和Google把我登录你的账户:一项针对商业部署单点登录网页服务的以流量为导向的安全研究。
2014年5月,隐蔽重定向漏洞被披露。[3] 该漏洞在《OAuth 2.0和OpenID相关的隐蔽重定向漏洞》中首次被报告,发现者是新加坡南洋理工大学数学博士生王晶(Wang Jing)。[4]事实上,几乎所有的单点登录协议都受影响。隐蔽重定向利用了易受跨站脚本或公开重定向攻击的第三方客户端。
[3] - 新安全漏洞威胁Facebook和Google用户
[4] - OAuth 2.0和OpenID相关的隐蔽重定向漏洞
七、常用配置
7.1 Kerberos-based
- 初始登录提示用户输入凭据,并获得 Kerberos 票证授予票证 (TGT)。
- 其他需要身份验证的软件应用程序,例如电子邮件客户端、wiki 和修订控制系统,使用票证授予票证获取服务票证,向邮件服务器/wiki 服务器等证明用户身份,而无需提示用户重新输入凭据。
Windows 环境 - Windows 登录获取 TGT。 Active Directory 感知应用程序获取服务票证,因此不会提示用户重新进行身份验证。
Unix/Linux 环境 - 通过 Kerberos PAM 模块登录获取 TGT。 Kerberized 客户端应用程序(如 Evolution、Firefox 和 SVN)使用服务票证,因此不会提示用户重新进行身份验证。
7.2 Smart-card-based
初始登录提示用户输入智能卡。其他软件应用程序也使用智能卡,而不提示用户重新输入凭据。基于智能卡的单点登录可以使用存储在智能卡上的证书或密码。
7.3 集成 Windows 身份验证
集成 Windows 身份验证(Integrated Windows Authentication)是一个与 Microsoft 产品相关的术语,指的是 SPNEGO 、 Kerberos 和 NTLMSSP 身份验证协议,这些协议与随 Microsoft Windows 2000 引入并包含在以后基于 Windows NT 的操作系统中的 SSPI 功能有关。该术语最常用于指代 Microsoft Internet Information Services 和 Internet Explorer 之间自动验证的连接。跨平台 Active Directory 集成供应商已将集成 Windows 身份验证范例扩展到 Unix(包括 Mac)和 Linux 系统。
7.4 安全断言标记语言(Security Assertion Markup Language)
安全断言标记语言 (SAML) 是一种基于 XML 的方法,用于在 SAML 身份提供者和 SAML 服务提供者之间交换用户安全信息。 SAML 2.0 支持 W3C XML 加密和服务提供商发起的 Web 浏览器单点登录交换。使用用户代理(通常是 Web 浏览器)的用户在基于 SAML 的单点登录中称为主体。用户请求受 SAML 服务提供商保护的 Web 资源。服务提供者希望知道用户的身份,通过用户代理向 SAML 身份提供者发出身份验证请求。身份提供者是提供用户凭据的人。服务提供者信任来自身份提供者的用户信息,以提供对其服务或资源的访问。
八、新兴配置
8.1 移动设备作为访问凭证(Mobile devices as access credentials)
使用移动设备作为访问凭据开发了一种更新的单点登录身份验证变体。通过使用包括 OpenID Connect 和 SAML、 MicroStrategy 的未来办公室包括移动身份和网络安全 和 X.509 在内的身份验证方法,用户的移动设备可用于自动将他们登录到多个系统,例如建筑物访问控制系统和计算机系统ITU-T 加密证书用于向访问服务器识别移动设备。
移动设备是“你拥有的东西”,相对于密码是“你知道的东西”,或者生物识别技术(指纹、视网膜扫描、面部识别等)是“你是什么”。安全专家建议至少使用这三个因素中的两个(多因素身份验证)以获得最佳保护。