1、SOFTWARE2023软 件第 44 卷 第 1 期2023 年Vol.44,No.1基金项目:湖南省教育厅科学研究项目(20C0252);常德职业技术学院级重点项目(ZY2104)作者简介:肖桂霞(1983),女,湖南常德人,硕士研究生,副教授,研究方向:教育信息化、网络安全。基于 B/S 架构的 Web 单点登录协议综述肖桂霞(常德职业技术学院现代教育技术中心,湖南常德 415000)摘要:单点登录(SSO)是一种机制,它使用单一的身份验证操作来允许授权用户访问所有相关但独立的软件系统或应用程序,而不会在特定会话期间被提示再次登录每个系统或应用程序。它允许用户在经过一次身份验证后访问多个
2、服务或应用程序,提高了用户的生产力,节省了企业对于用户管理的成本,也降低了管理员集中管理用户的风险。SSO 可用于单一的企业,也可用于多域或者互联网。本文探讨了几种主流的应用于 B/S 架构的互联网 SSO 及其使用的技术和协议,并列举了他们的主要应用案例和优缺点。关键词:单点登录(SSO);CAS;OAuth;OpenID;OIDC;SAML;BrowserID;WebAuthn中图分类号:TP391.4 文献标识码:A DOI:10.3969/j.issn.1003-6970.2023.01.001本文著录格式:肖桂霞.基于B/S架构的Web单点登录协议综述J.软件,2023,44(01)
3、:001-005+023A Review of Web Single Sign-On Protocol Based on B/S ArchitectureXIAO Guixia(Modern Educational Technology Center,Changde Vocational Technical College,Changde Hunan 415000)【Abstract】:Single Sign-On(SSO)is a mechanism that uses a single authentication operation to allow an authorized user
4、 to access all related but independent software systems or applications without being prompted to log in to each system again during a specific session or application.It allows users to access multiple services or applications after one authentication,which improves user productivity,saves the cost
5、of user management for enterprises,and reduces the risk of administrators to centrally manage users.SSO can be used for a single enterprise,or for multiple domains or the Internet.This article discusses several mainstream Internet SSOs applied to B/S architecture and the technologies and protocols t
6、hey use,and lists their main application cases,advantages and disadvantages.【Key words】:Single Sign-On(SSO);CAS;OAuth;OpenID;OIDC;SAML;BrowserID;WebAuthn基金项目论文0 引言在当今的数字世界中,用户必须访问多个系统来执行日常业务活动。随着安全性的提高,各个系统对密码安全性的要求也越来越高。用户经常会出现丢失或忘记密码的情况。很多用户采用同一个密码或者直接记录密码的方式来缓解记忆多系统凭证的压力。这种做法存在很大的安全隐患,单点登录技术应运而生,
7、解决多系统凭证使用的便捷性和安全性等一系列问题。单点登录全称 Single Sign On(以下简称 SSO),用于身份验证和授权,是一种允许用户使用一套用户名和密码来完成身份验证而获取多个应用程序服务的机制。它要求用户登录一次,没有任何进一步的登录条件,用户便可以安全地访问多个软件系统的资源。但这并不意味着 SSO 系统统一了所有服务、应用程序和系统的账户信息,它只是将多个账户信息隐藏到用户需要登录的单个账户中,一旦用户登录,SSO 系统就会生成各种应用程序和系统接受的身份验证信息,对主要身份验证中心的单点登录访问使用户能够访问所有其他可用资源。SSO 通过避免用户记住多个密码来帮助提高用户
8、和开发人员的工作效率,并减少用户在输入各种密码以登录时花费的时间。SSO 还通过管理单个凭据而不是多个凭据来简化管理。它可以轻松管理用户到达、更改功能或离开公司的权限,快速集成其他应用程序,委派访问权限,而不会增加帮助台的工作量。2软 件第 44 卷 第 1 期SOFTWARE1 单点登录的分类单点登录可以根据他们部署的位置、部署方式、使用的凭证等进行分类。根据单点登录部署的位置可以分为内联网 SSO、外联网 SSO 和互联网 SSO。根据部署方式主要分为简单的 SSO 结构和复杂的 SSO 体系结构1。根据使用的凭证可以分为基于令牌的 SSO,如 JWT、Kerberos,以及基于 PKI
9、的 SSO,如 BrowserID。单点登录的技术和协议有很多,比如 Kerberos、CAS、OAuth、OpenID、SAML、BrowserID、WebAuthn等。其中有的只做认证比如:Kerberos、CAS、SAML、Webauthn;有的只做授权 OAuth2.0;有的兼具认证与授权:OpenID Connect(OIDC)、BrowserID;还有一些技术主要用于身份存储,如 AD、LDAP 等。单点登录(SSO)协议今天已经集成到数百万个Web 服务中,因此终端用户就可以向第三方身份提供商(IDP)进行身份验证,以访问多个服务。IDP 通常提供集成工具,隐藏几乎所有的实现细节
10、,并允许开发人员在短时间内实现 SSO。集成工具关注的是实现,开发人员难以通过集成工具清楚地了解底层的 SSO 协议。为了便于了解,我们将讨论这些主流 Web SSO 协议的特点及原理细节等。2 主流 B/S 架构的 Web SSO 协议2.1 CAS Central Authentication Service 简 称 CAS,是 一种常见的 B/S 架构的 SSO 协议,由耶鲁大学技术与规划学院的 Shawn Bayern 构思和开发的,CAS 开始于 2001年,并在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 是一种仅用于 Authentication 的服务。C
11、AS 1.0 实现了单点登录,CAS 2.0 引入了多层代理身份验证,2013年 4 月,CAS 协议规范 3.0 发布,这三个版本的认证流程基本类似2。CAS 的认证流程通过包括几部分参与者:Client 通常为使用浏览器的用户;CAS Client 实现 CAS协议的 Web 应用;CAS Server 作为统一认证的 CAS服务器。CAS的工作原理如图1所示。当用户认证成功后,CAS SERVER 将向访问者发放“准予票据”(全称 Ticket Granting Ticket,简称 TGT),并创建一个全局的单点登录会话(SSO Session)。当用户在浏览器端使用“准予票据(TGT)
12、”作为令牌来重定向访问一个应用时,服务端在将客户端附带的 TGT 验证通过后,向客户端发放一个“服务票据(ST)”然后作为参数附在被访问的应用 URL 后面。被访问应用通过后台的方式将接收到的 ST 发送到 CAS 服务端进行验证。当 HTTP 再次请求到来时,如果传过来的有 CAS 生成的 Cookie,则CAS 以此 Cookie 值为 Key 查询缓存中有无 TGT,有则说明用户之前登录过,没有,则用户需要重新登录。CAS 对客户端的验证通常通过存储在数据库中的用户名和密码比对来实现,支持 LDAP、OAuth、SAML、OpenID 等多种协议,作为开源项目已经在数以百计的大学校园中使
13、用3。但是由于 CAS 是一种基于票据的协议,Web USER、CLIENT 和 SERVER 之间需要传递和验证票据,原来的应用系统必须经过改造才能发挥CAS 的功能。2.2 OAuthOAuth是一种授权协议,而不是身份验证协议,OAuth 1.0 协议于 2010 年 4 月以 RFC 5849 的形式发布。OAuth 2.0 于 2012 年 10 月发布为 RFC 6749,承载令牌用法为RFC 67504。OAuth 2.0 授权框架使第三方应用程序能够获得对 HTTP 服务的有限访问,可以通过协调资源所有者和 HTTP 服务之间的批准互动来代表资源所有者,或者允许第三方应用程序以
14、自己的名义获得访问。它指定了资源所有者授权第三方访问其服务器资源而不提供凭据的过程。OAuth 的工作原理如图 2 所示。首先应用程序向用户请求访问服务资源的授权,如果被允许,应用程序会收到授权许可。接着,应用程序出示身份和授权许图 1 CAS 工作原理Fig.1 CAS working principle P2:图 1 少了两个箭头 替换一下 P3:图 2 漏掉两个词 替换一下 一定看看 图 4 这个也是漏掉中间的了 78 1312 11 109 6 5 432 1 CASClient1 CAS Server CASClient2 Client Web User 1:访问应用1;2、9:重定
15、向到S;3:用户认证;4:发放TGT;5:带ST访问应用1;6、12:验证并保存ST;7、13:设置session,并带session访问成功;8:访问应用2;10:验证TGT;11:带ST访问应用2。3肖桂霞:基于 B/S 架构的 Web 单点登录协议综述可,从授权服务器请求访问令牌,如果应用程序身份已通过身份验证并且授权许可有效,授权服务器会向应用程序颁发访问令牌。最后应用程序从资源服务器请求资源并提供访问令牌以进行身份验证,如果访问令牌有效,则资源服务器将相应资源提供给应用程序。OAuth2协议简单,可基于HTTP/JSON传递Token,成熟度高,也比较安全,应用十分广泛,目前比如亚马
16、逊、谷歌、Facebook、微软、Twitter、企业微信和钉钉等知名公司和产品都使用此机制允许用户与第三方应用程序或网站共享有关其账户的信息。通过对国内网站 OAuth 接入调查发现,有超一半的网站都通过 OAuth2.0 接入了微信、QQ 和微博授权登录5,这都是用户数量和活跃度最高的一些社交平台,在网站接入选择上具有绝对的优势。但是 OAuth2 仅含授权协议,且是一个框架协议,范围广泛,不是具体的实现,不同公司的实现方式是不一样的,实现兼容性和相互操作性也会打折扣。2.3 OpenIDOpenID 是由非营利性 OpenID 基金会推动的开放标准和去中心化的身份验证协议。它允许用户通过
17、使用第三方身份提供者(IDP)服务的合作站点进行身份验证,并允许用户登录到多个不相关的网站,而不必为这些网站再设置身份和密码。用户通过选择OpenID身份提供者来创建账户,然后使用这些账户登录任何接受OpenID身份验证的网站。OpenID的最终版本是OpenID 2.0,于2007年12月完成并发布。OpenID Connect简称OIDC,是第三代OpenID技术,由OpenID基金会于2014 年 2 月发布。OIDC 是基于 OAuth2.0 扩展出来的,指定了一个 RESTful HTTP API,使用 JSON 作为数据格式,是当今最流行的协议6。OpenID的工作原理如图3所示。
18、用户用身份提供者(IDP)注册自己以接收 OpenID 凭据。当用户希望访问应用程序 A 时,应用程序 A 将用户重定向到 IDP。用户使用自己的 OpenID 凭证登录到 IDP。在成功验证时,IDP 将用户重定向回应用程序 A。如果用户要访问Web 应用程序 B,它将向 Web 应用程序 B 发送请求,在接收请求时,它进入 IDP 并检查试图访问它的用户是否处于活动状态。如果发现处于活动状态,Web 应用程序 B 将允许用户自动访问它。类似地,其他应用程序也将遵循相同的过程。应用程序 A 不知道在 Web 应用程序 B 中发生了什么,而 Web 应用程序 B 也不知道在应用程序 A 中发生
19、了什么。OpenID 一处注册,多处出入自由,它允许用户通过一个 URL 作为 OpenID 身份认证,在多个网站上进行登录6。可同时用来做认证和授权,协议简单易实现,成熟度高,应用广泛。截至 2016 年 3 月,互联网上有超10 亿启用 OpenID 的账户,大约 1,100,934 个站点集成了 OpenID 消费者支持,这些站点包括 Google、IBM、雅虎、微软、MySpace、Facebook、A、环球音乐集团、威瑞信、WordPress、BBC、PayPal 等。接收 OPENID注册WebApplication AWebApplication BIDP请求访问B图 3 Ope
20、nID 工作原理图Fig.3 OpenID working principle2.4 SAML安全断言标记语言(SAML)协议是一个基于 XML图 2 OAuth2.0 流程概述图Fig.2 OAuth2.0 process overview diagram P2:图 1 少了两个箭头 替换一下 P3:图 2 漏掉两个词 替换一下 一定看看 图 4 这个也是漏掉中间的了 78 1312 11 109 6 5 432 1 CASClient1 CAS Server CASClient2 Client Web User 1:访问应用1;2、9:重定向到S;3:用户认证;4:发放TGT;5:带ST访
21、问应用1;6、12:验证并保存ST;7、13:设置session,并带session访问成功;8:访问应用2;10:验证TGT;11:带ST访问应用2。5 访问令牌 4 访问令牌 3 授权授予 2 授权授予 1 授权申请 Resource owner(End user)Client Third-party App(Priting Service)Resource Server Protected Resource(Google drive photo)Authorization Server(Google Authorization server)6 受保护的资源 End User 6 访问成
22、功 1 访问 SP 4 用户登录 3 身份挑战 2 转换成 SAML 请求,重定向 5 签发断言 Identity Provider 公钥 私钥 Service Provider 公钥 4软 件第 44 卷 第 1 期SOFTWARE的标准协议。SAML 标准定义了身份提供者(IDP)和服务提供者(SP)之间,如何通过 SAML 规范,采用加密和签名的方式来建立互信,从而交换用户身份信息。结构化信息标准促进组织(OASIS)于 2002 年 11 月宣布将 SAML1.0 规范作为 OASIS 标准,与此同时,由公司、非营利组织和政府组织组成的大型联盟提议对 SAML 标准进行扩展,安全服务技
23、术委员会(SSTC)也开始对 SAML 标准进行小幅升级,并于 2003 年 9 月批准了由此产生的 SAML 1.1 规范。2005 年 3 月,SAML2.0 被宣布为 OASIS 标准。到 2008 年 1 月,SAML2.0 在全球政府、高等教育和商业企业中变得流行7。SAML 的工作原理如图 4 所示。用户访问 SP 站点,SP 站点将转换成 SAML 请求,重定向至 IDP。IPD 收到后对用户发起身份挑战,用户通过账号密码完成登录。IDP 为用户提供合法的身份证明,IPD 用私钥签发了一个断言作为之前 SAML 请求的响应。SP 站点根据断言信息找到其颁发者 IDP,并从自己的数
24、据库中找到IDP 对应的公钥证书,并验证断言的签名,若能验证,说明当前断言是 IDP 颁发的,可以被信任,允许用户登录站点。SAML 是一个非常古老的验证协议,协议功能强大,涵盖场景多,比较全面,在早期 B/S 架构的企业级应用中非常流行,另外老牌 Windows Server,也大量使用了 SAML 认证8,9。但只支持 Web SSO,不支持移动端,且基于 XML 协议签名和加密,技术复杂度大。3 新发展CAS、OAuth、OpenID、SAML 都是基于 Token 的身份认证和授权协议,Token 有相应的生命周期,过期后需再次验证,且基于 Token 的身份认证无法精确的识别用户来源
25、,另外 Token 的注销有难度,很难解决客户端劫持等问题10。很多研究者致力于开发更安全更便捷的身份注册和验证协议,比较有代表性的有 WebAuthn和 BrowserID 等。3.1 WebAuthnWeb身份验证API(WebAuthn)是由W3C和FIDO编写的规范11,有 Google、Mozilla、Microsoft、Yubico等参与。API 允许服务器使用公钥加密而不是密码来注册和验证用户。它允许服务器与内置于设备中的身份验证器集成,例如 Windows Hello 或 Apple 的 Touch ID。WebAuthn 代替密码,为网站创建了一个私有公共密钥对。私钥安全地存
26、储在用户的设备上,公钥和随机生成的凭证 ID 被发送到服务器进行存储。然后,服务器可以使用该公钥来证明用户的身份。WebAuthn 是 FIDO2 框架的一部分,该框架是一组技术,可在服 1 用户想创建一个账户 2 给我一个公钥 User Web Browser 7 使用私钥签名,发送签名 8 公钥验证签名,可以登录 6 在此数据上签名,核验身份 4 注册完成 5 用户尝试登录 3 创建密钥对,发送公钥 Service Provider 图 5 WebAuthn 注册和登录的过程Fig.5 Process of WebAuthn registration and login图 4 SAML 工
27、作流程图Fig.4 SAML workflow diagram P2:图 1 少了两个箭头 替换一下 P3:图 2 漏掉两个词 替换一下 一定看看 图 4 这个也是漏掉中间的了 78 1312 11 109 6 5 432 1 CASClient1 CAS Server CASClient2 Client Web User 1:访问应用1;2、9:重定向到S;3:用户认证;4:发放TGT;5:带ST访问应用1;6、12:验证并保存ST;7、13:设置session,并带session访问成功;8:访问应用2;10:验证TGT;11:带ST访问应用2。5 访问令牌 4 访问令牌 3 授权授予 2
28、 授权授予 1 授权申请 Resource owner(End user)Client Third-party App(Priting Service)Resource Server Protected Resource(Google drive photo)Authorization Server(Google Authorization server)6 受保护的资源 End User 6 访问成功 1 访问 SP 4 用户登录 3 身份挑战 2 转换成 SAML 请求,重定向 5 签发断言 Identity Provider 公钥 私钥 Service Provider 公钥 5肖桂霞:
29、基于 B/S 架构的 Web 单点登录协议综述务器、浏览器和身份验证器之间实现无密码身份验证。其工作原理如图 5 所示。它使用不对称加密替代密码或 SMS 文本在网站上注册和验证,可以解决钓鱼和数据破坏以及 SMS 文本攻击等重大安全问题,跨多种操作系统平台,支持各种 Windows、Linux、MacOS 以及移动端的安卓、IOS 等设备12。WebAuthn 致力于将用户对基于 Web 的应用程序和服务的公钥认证的接口标准化,支持生物验证,极大提高了使用的便捷性,具有非常广阔的应用前景,自 2019 年 1 月起,Chrome、Firefox、Edge 及 Safari 等浏览器已支持 W
30、ebAuthn。3.2 BrowserIDBrowserID 是 Mozilla 于 2011 年 7 月为了更安全更好替代 OpenID 而提出的,目标是消除电子邮件验证,不记录用户的上网行为,帮助保护用户的隐私和安全。它仅需一个电子邮件地址注册浏览器账号,即可登录到所有支持 BrowserID 的网站,基于 H5 和 JavaScript 开发,在主流浏览器上都可以运行。核心思想是永远记住电子邮件地址,而不是虚构的用户名或 URL。具有便捷、安全、跨浏览器实现、去中心化的全网验证、改进未来浏览器体验、尊重用户隐私等优点13。其工作原理如图 6 所示。1 用户浏览到“”。“”需要向用户的浏览
31、器表明它支持 BSSO;2当用户单击“”的“登录”按钮时,浏览器将代表“”以“”的端点向“”发出身份验证请求;3 这将需要用户在浏览器 BSSO 设置中预先选择他喜欢的电子邮件地址,或要求用户选择他喜欢的电子邮件地址,“”返回用户电子邮件地址的肯定断言;4 浏览器现在通过 http post 请求将用户引导到“”的端点 url,断言从 post正文中的“”返回;5“”现在将通过将断言连同关联直接发送到“”的端点来验证断言;6“”将响应成功或失败。4 结语信息技术的蓬勃发展给人们带来了丰富多样的电子化服务,在享受这些便捷服务的同时,首先要解决的一个问题就是让系统识别用户的身份,随着业务系统的增加
32、,频繁的登录和繁多的密码也慢慢变成一种负担。利用身份认证和授权而发展起来的单点登录技术已成为粘合用户的一种不可或缺的方式。本文从目前常见的几种基于 HTTP 协议的 Web 单点登录技术和协议出发,从它们的功能、工作原理和流程概览、应用情况和优缺点等方面进行了分析,并介绍了两种比较新的单点登录协议,除了使用的便捷性,安全和隐私保护是今后单点登录技术要解决的主要问题。OIDC 和 OAuth 仍然是目前使用范围最广,最流行的单点登录协议,BrowserID也是在 OIDC 的基础上,为保护用户浏览隐私而设计的。参考文献1 RADHA V,REDDY D H.A Survey on Single
33、Sign-On TechniquesJ.Procedia Technology,2012,4(1):134-139.2 ARDAGNA C A,DAMIANI E,VIMERCATI S D C D,et al.CAS+:An Open Source Single Sign-On Solution for Secure e-ServicesC/IFIP TC 11 International Information Security Conference,2006.3 范围.基于CAS的单点登录系统应用研究J.电子测试,2016(8):64+63.4 HARDT D.Rfc 6749:The
34、Oauth 2.0 Authorization FrameworkS.Internet Engineering Task Force(IETF),2012,10:2070-1721.S E Browser 1 2 3 4 5 6 1:表示支持 bsso,带有 bsso 端点 url 2:使用 站点 url 发出身份验证请求 3:返回一个肯定断言 4:发送断言到 5:使用 验证断言 6:验证成功或者失败 图 6 BrowserID 工作流程Fig.6 BrowserID workflow 下转第23页23金晓康吴瑶施莹娟等:基于 YOLO 框架的实时交通标志识别算法研究与系统实现5 朱博昌.基于
35、OAuth2.0协议的授权登录国内应用现状研究J.现代信息科技,2019,3(20):151-154.6 张明西,刘晖.OpenID标准化认证机制的研究与应用J.计算机应用与软件,2010,27(7):61-62.7 ARMANDO A,CARBONE R,COMPAGNA L,et al.Formal Analysis of SAML 2.0 Web Browser Single Sign-on:Breaking the SAML-based Single Sign-on for Google AppsC/Proceedings of the 6th ACM Workshop on Form
36、al Methods in Security Engineering,2008:1-10.8 韩伟,范植华.基于SAML的单点登录技术在Web服务中的应用研究J.计算机工程与设计,2005(03):634-636.9 吴志奇.SAML2.0的研究与应用D.武汉:武汉理工大学,2013.10 NONGBRI I,HADEM P,CHETTRI S.A Survey on Single Sign-onJ.The International Journal of Creative Research Thoughts,2018,6(2):595-602.11 CHAKRABORTY D,BUGIEL
37、S.SimFIDO:FIDO2 User Authentication with SimtpmC/Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security,2019:2569-2571.12 KLIEME E,WILKE J,DORNICK N V,et al.FIDOnuous:a FIDO2/WebAuthn Extension to Support Continuous Web AuthenticationC/2020 IEEE 19th International Conf
38、erence on Trust,Security and Privacy in Computing and Communications(TrustCom).IEEE,2020:1857-1867.13 BELTRAN V.Characterization of Web Single Sign-on ProtocolsJ.IEEE Communications Magazine,2016,54(7):24-30.上接第5页图 5 所示是该功能的初始界面。4 结语道路交通标志识别是智能交通系统中的重要组成部分,需要保证整个系统的实时性、准确性、稳定性等各个方面的均衡能力。选取 YOLOv3-Ti
39、ny 算法进行交通标志识别,用于满足实时性和稳定性;利用大规模的交通标志数据集对网络模型重新训练,使模型具备更好的泛化能力,保证整个系统的准确性;此外,将训练完成的模型部署在嵌入式设备 Jetson TX2 上,借助跨平台框架 Qt 实现用户界面,支持图像识别、视频识别、相机识别的功能,还加入了多项辅助功能,使系统具备了可应用性和适用性。本系统能够支持不同模型算法的替代,且在今后的应用中还将针对高性能计算不断迭代优化。参考文献1 郭戈,许阳光,徐涛,等.网联共享车路协同智能交通系统综述J.控制与决策,2019,34(11):2375-2389.2 尉天成,陈小锋,殷元亮.基于多尺度卷积神经网络
40、的道路交通标志识别方法研究J.西北工业大学学报,2021,39(4):891-900.3 YANG X D,WANG W Z,YANG H W,et al.Simple Data Augmented Transformer End-to-end Tibetan Speech RecognitionC/IEEE International Conference on Information Communication and Signal Processing,2020:148-152.4 LU J,HE J X,LI Z,et al.A Survey of Target Detection B
41、ased on Deep LearningJ.Electronics Optics&Control,2020,27(5):60-67.5 LE T H,CHEN H,BABAR M A.Deep Learning for Source Code Modeling and Generation:Models,Applications,and ChallengesJ.ACM Computing Surveys,2020,53(3):1-38.6 李旭东,张建明,谢志鹏,等.基于三尺度嵌套残差结构的交通标志快速检测算法J.计算机研究与发展,2020,57(5):1022-1036.7 ZHANG J
42、,XIE Z,SUN J,et al.A Cascaded R-CNN with Multiscale Attention and Imbalanced Samples for Traffic Sign DetectionJ.IEEE Access,2020(8):29742-29754.8 ZHANG J,WANG W,LU C,et al.Lightweight Deep Network for Traffic Sign ClassificationJ.Annals of Telecommunications,2020,75(7):369-379.9 李旭东.基于深度卷积网络的实时交通标志检测研究D.长沙:长沙理工大学,2020.图 5 视频播放初始界面Fig.5 Initial interface of video playback