英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
Web单点登录协议的特性分析
摘要
单点登录(SSO)协议现在已集成到数百万个Web服务中,因此最终用户可以向第三方身份提供商(IdP)进行身份验证以访问多项服务。IdP通常提供集成工具,隐藏几乎所有的实现细节,并允许开发人员在几分钟内实现SSO。这些集成工具以及繁琐的协议规范导致开发人员无法清楚地看到底层的SSO协议。本文介绍了WebSSO协议的概念特性,通过它们的断言及其特性来帮助保护SSO中涉及的用户资源的隐私。
介绍
Web服务需要验证其用户的身份以保证用户安全和隐私,或提供个性化的用户体验。网络用户传统上必须复制相同的个人和背景数据(例如姓名,地址,银行账户,电话号码等)以创建其用户账户。这种以网站为中心的身份管理迫使用户在整个网络上复制其身份,并依次向服务进行身份验证,每个服务都有自己的凭据。众所周知的单点登录(SSO)方法允许用户登录一次,并通过将用户认证从服务提供商委托给认证服务来访问多个服务。服务提供商和身份验证服务形成身份联合身份验证,可以将身份信息从一个域导入另一个域。在Web上,像OpenID这样的身份联合协议允许Web服务将用户重定向到第三方服务,这些服务被称为身份提供者(IdP)用于身份验证。IdP通过提供至少包含用户的唯一标识符的身份断言告知Web服务谁是当前用户,并且可以包括其他与身份相关的属性,例如姓名,地址和电子邮件。在SSO中,Web服务仅依靠身份信息授予用户访问权限。尽管身份联合协议的HTTP流已经被广泛研究,但这些协议的断言数据模型尚未得到充分的分析。只有在Web实时通信(WebRTC)框架中,身份断言对用户隐私的影响已得到解决。
本文提供了SSO断言的特征描述,并通过它们的断言解释了四种协议:OpenID,OAuth2.0,OpenIDConnect和BrowserID。本文还构思了这些协议的设计选择如何影响用户隐私的高级视图。
身份联盟的网络特点
身份联合和SSO最初应用于企业和政府网络的安全领域。公司用户可以透明地访问他们已经验证的身份验证服务器的安全域中的任何服务。Kerberos是集中认证服务的事实认证协议。对于域间场景,SAML/SOAP范例深深融入企业,政府网络和医疗,银行与教育等垂直领域。与SAML类似,WS-*(例如WS-Federation和WS-Security)是微软推出的一套大型OASIS身份联合规范。
虽然SAML和WS-*规范能够将标识声明从一个域导入到另一个域,但它们的复杂性和对授权规则以及服务和认证服务器之间的信任关系的完全不符合千变万化的万维网(WWW)。互联网服务的联合身份验证与公司对等服务具有不同的性质。没有集中的安全服务器,而是基于JSON或XML的数百万的API,混搭和应用程序,这些API通过基本的HTTP请求和响应交换进行自由通信。因此,基于REST的灵活协议如OpenID和OAuth2.0简化了松散耦合的身份联合并加速了应用程序开发,已经在网络上找到了方向。Web身份联合协议主要定义如何将身份信息从IdP传递到WebSSO,术语中称为依赖方(RP)的Web服务。这些协议独立于IdP执行的认证过程。事实上,他们不会自己提供SSO。SSO体验由用户浏览器的HTTPcookie存储提供。只要IdP的会话cookie处于活动状态,用户就不必重新进行身份验证即可登录到Web服务。尽管如此,为了简洁起见,在本文的其余部分我将Web身份联合协议称为WebSSO协议。
虽然OpenID是第一个到2005年被互联网服务提供商广泛采用的WebSSO协议,但由于OAuth能够委派访问受保护的API以及用户身份,因此OAuth迅速崛起。事实上,采用OAuth的最大动力是发布了一套基于OAuth的FacebookAPI,称为FacebookConnect,它允许Web服务根据用户的Facebook身份登录用户并访问社交网络功能。OAuth是通用的委托授权协议,它为客户端提供访问令牌,以便它可以根据资源所有者的许可访问受保护的资源。尽管OAuth不是SSO协议,并且使资源被授权超出范围,但它已被大量用于构建身份验证和身份协议。OAuth未指定如何传送身份验证和身份信息的事实已导致互操作性,甚至存在安全问题。每个IdP都在OAuth之上定义自己的自定义标识层,以提供对身份信息的委托访问。为了解决这些限制,OpenIDConnect(OIDC)出现在OAuth之上,提供了一个可互操作的身份验证和身份验证框架。最后,BrowserID是基于用户证书的SSO的浏览器端API规范。
本地应用程序
OAuth已经成为在移动应用中实施联合认证和授权功能的事实上的协议。由于OAuth在移动应用程序采用爆炸的同一时期发展(到2007-2008年),该协议是在移动平台中合并身份验证和授权的最佳选择。
移动RP可以本地集成第三方登录(通过某些IdP提供的SDK)或通过WebRP实现的相同的基于Web的协议流(通过移动浏览器或WebViews)。在Web上,SSO依靠浏览器的Cookie存储来验证用户是否与IdP有活动会话。在移动平台上,移动浏览器还会保存可供移动应用程序共享的用于SSO的Cookie存储。但是,将用户重定向到移动浏览器进行登录会导致糟糕的用户体验。此外,如果登录流出现问题,用户可能不会被重定向回应用程序。基于本地或基于WebView的第三方登录实现提供了更好的用户体验。但是,移动应用程序是孤立的,不共享任何用户身份验证证据空间,也不共享网页视图。
本地SSO应用程序或平台集成SSO可以提供共享的移动SSO身份验证证明空间。一些IdP已经在提供原生SSO应用程序,它们代表移动应用程序处理协议流和身份验证证明。当移动应用程序希望对用户进行身份验证时,它将调用用户IdP的SSO本机应用程序,而不是自行(通过SDK,WebView或移动浏览器)实现第三方登录。尽管如此,要为用户希望验证的每个IdP安装一个SSO应用程序可能会很乏味。因此,已经有第三方提供商为多个IdP提供单一本地应用程序用于SSO。为了标准化,最近的本地应用程序(NAPPS)工作组正在为本地令牌发布代理定义OpenIDConnect(OIDC)的配置文件。该配置文件将通过移动应用程序的标准化接口提供本机SSO。关于平台集成的SSO,一些解决方案已经存在。SamsungKnox和AppleiOS(来自iOS7版本)实施Kerberos来解决企业用户的移动安全需求。对于客户服务,Google和Microsoft都将OAuth集成到Android和微软的WindowsPhone8.1中,以启用对其各自的IdP(即GoogleSign-In和MicrosoftLiveConnectSSO)的身份验证。
SSO断言
任何SSO系统的最终目标是提供身份断言,允许用户在不重新认证的情况下登录Web服务。身份断言的格式取决于底层SSO协议。OpenID将用户身份信息编码为标准明文键值属性。OIDC为用户身份信息定义了两个不同的JSON对象:ID令牌和UsReFipe对象。两个选项都是JSONWeb令牌(JWT)对象,这些对象可以包含相同的身份属性,这些属性被称为OIDC术语中的声明。OpenID和OIDC分别定义了一组标准的“属性”和“声明”,但也允许定义非标准身份信息。在BrowserID中,用户身份信息被编码在JSONWeb签名(JWS)对象中,该对象仅包含标识用户的电子邮件地址。基于OAuthIDP的IDP定义了自己的身份属性及其格式,因为OAuthe保留了未经授权的资源的格式。
除了身份断言之外,SSO协议还可以交换身份 验证和授权声明。认证断言告诉Web服务关于用户的认证事件。例如,OIDC标识令牌可以指定用户验证和验证方法的确切时间。授权声明用作IdP给RP的通过以检索另一个声明。如图1所示,SSO声明可根据其传送模式进行分类,无论其性质如何。表1总结了声明的特征OpenID, OAuth,OIDC和BrowserID。
图1 SSO逻辑过程
表1 SSO协议中的断言特征
Protocol |
Name |
Type |
Format |
Delivery mode |
OpenID |
Positive assertion |
Identity |
(key,value) pairs |
I |
OAuth2.0 |
Authorization code |
Authorization |
Opaque string |
I |
Access token |
Authorization |
Opaque string |
I2 A3 |
|
OpenID Connect |
Authorization code |
Authorization |
Opaque string |
I |
Access token |
Authorization |
Opaque string |
I4 A5 |
|
ID token |
Authentication and identity |
JWT/JWS/JWE |
I6 A7 |
|
UserInfo |
Identity |
JWT/JWS/JWE |
A |
|
BrowserID |
Backed identity assertion |
Identity |
JWS |
I |
从断言分析WebSSO协议
SSO协议在其断言类型,格式和传送模式方面有所不同。用户在OpenID,OAuth2.0,OIDC和BrowserID中验证(并授权RP)后,用户浏览器的软件组件以及IdP和RP的服务器如何进行交互,以向SS传递SSO声明。OpenID通过包含响应正文身份信息的HTTP重定向响应提供即时身份断言。
OAuth2.0只定义了如何获得称为访问令牌的自组织断言,这些断言可用于根据资源所有者的授权检索服务器资源。因此,基于OAuth的IdP仅通过要求RP拥有访问令牌来提供预授权的身份断言。访问令牌可以是立即的,或者被称为授权代码的另一断言预授权。后一种情况称为授权码流程。在由IdP发送的HTTP重定向响应中,授权代码作为重定向URL的参数附加。RP交换访问令牌的授权码;预授权访问令牌包含在HTTP响应正文中的JSON对象中。当访问令牌是即时的,它直接发送到Web服务(没有以前的授权代码)。它被称为OAuth2.0隐式流程。IdP将该令牌包含为HTTP响应的重定向URL的片段。然后,重定向请求将下载一个脚本,该脚本从重定向URI获取令牌并将其发送到服务器端RP。OIDC在OAuth2.0之上定义了一个身份层,使Web服务能够获得即时和预授权的身份断言。UserInfo对象是始终由访问令牌预先授权的身份断言,并作为JSON对象包含在IdP对RP的响应中。与在OAuth2.0中一样,访问令牌可以立即或由授权代码预先授权。ID令牌还可以包含标识声明,并且可以在预授权或即时模式下检索。其提供了由授权码预先授权的ID令牌和访问令牌。其他OIDC流程结合了直接和预授权的访问令牌和ID令牌。立即身份标识在身份验证请求之后立即作为HTTP重定向响应的URL片段发送(如在访问令牌的OAuth2.0隐式流程中)。用于提供标识声明的BrowserID流与其他三种协议的不同。尽管BrowserID身份断言是即时的,但它们不会直接发送到RP。IdP向用户浏览器发送正常响应,而不是向RP发送重定向响应。因此IdP和RP完全断开。事实上,IdP没有回应RP的最终用户身份断言,而是使用用户证书。用户证书是包含用户的电子邮件地址和由IdP签署的公钥的JWS对象。当用户浏览器收到用户证书时,它会生成另一个包含目标服务URL的JWS对象。浏览器使用用户的私钥对这个对象(称为用户断言)进行签名,并将此断言和用户证书一起传递给浏览器上的客户端RP代码。因此,BrowserID身份断言(所谓的用户支持的身份断言)由两个JWS对象组成:一个由IdP(用户证书)生成,另一个由浏览器生成(用户断言)。
Websso中的用户权限
IDP断言用户身份断言的准确性,从而确保这样的断言属于已被正确认证的用户。当用户对IDP进行认证时,通常通过证明拥有他们知道的东西(例如密码)和/或拥有(例如SIM卡),身份断言是Web服务需要授予用户访问的唯一认证证明,如图2所示。
与传统的客户端-服务器认证系统相比,第三方登录带来更多的安全风险,即仅仅有更多的资源来保护。图2显示,在单个S
全文共12582字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[16399],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。