标题 | 基于OpenID2.0的认证授权系统的分析与设计 |
范文 | 刘艳民++鄂海红 摘要:随着互联网的发展,各式各样的网站日益增多,用户使用某个网站的资源时,需要注册成为此网站的用户。在这种形式下,第三方登录逐渐流行乃至普遍。当下用于授权的OAuth2.0协议普遍被各大公司使用,但是授权之前并未进行身份认证,本文提出一种完善的基于OpenID2.0的认证授权机制,使得用户可以安全的将自己的互联网身份共享在多个网站上。 关键词:系统设计;OpenID2.0; OAuth2.0;认证;授权 中图分类号:TP311 文献标识码:A DOI: 10.3969/j.issn.1003-6970.2015.10.001 引言 OpenID 2.0(Open Identification)协议是OpenID基金会推出的去中心化的用户认证协议,这个协议允许用户使用同一个标识登录不同的支持OpenID登录的网站。使用OpenID登录的方式为用户提供了极大的方便,用户不用在每个网站上都注册账号,更不必记忆繁琐的用户名和密码,OAuth(OpenAuthorization)是一个开放标准,允许用户授权给第三方应用,使其访问用户在某个网站的个人资料。OAuth 2.0协议是OAuth协议的下一个版本,但是不兼容OAuth l.0协议即完全废止了OAuthl.0。 目前,OAuth2.0已经成了主流的授权协议,腾讯微博、QQ空间、新浪微博、百度开放平台、淘宝开放平台、人人网、搜狐等各大网络平台都已支持OAuth2.0,支持用户用其身份登录别的网站。但是OAuth2.0协议中并无“身份”的概念,用户A浏览第三方应用B(或网站),B请求A在网站C的资源,B只是作为一个资源请求者向C请求资源,C不需要知道B是谁,C只需得到A的允许,由此看来,资源拥有者并未完成对客户端的身份认证。 OpenID2.0是一个以用户为中心的数字身份识别框架,具有开放、分散、自由等特性。OpenID相关的技术有统一认证和单点登录等。单点登录,是一种认证和授权机制,主要目的是为了方便用户访问多个系统,统一身份认证,旨在将分散在各个信息系统中的用户和权限资源进行统一集中管理,提升系统安全性,简化资源访问操作。本文的设计既不是统一认证,也不是单点登录,是一种在多个网站间共享用户名的方案。 在支持OpenID的网站登录时,对于用户,只需输入OpenID标识,就可以成为此网站的用户,享受其服务。第三方网站会根据用户输入的OpenID标识去发现OpenID提供商,OpenID提供商对持有该标识的用户进行认证,认证完成后,第三方网站可以根据用户的选择,分享用户在OpenID提供商网站的信息,这就涉及到授权访问的问题。授权访问可以采用OAuth开放授权技术实现第三方网站对OpenID提供商网站资源的访问。 1 协议工作方式 下面有个很形象的比喻:当我们住在酒店,每天给我们打扫房间的酒店清洁人员进行清洁时,一般情况下,穿着工作服,带着房门钥匙的,我们心里就会默认:这就是清洁人员。大多数情况下也是这样,但是有的时候可能会有坏人拿着酒店房门的钥匙,穿着清洁服,打着清洁的招牌进入房间进行盗窃等,我们以为他是清洁人员,其实可能是小偷。这就说明,我们在授权别人做某些事情的时候,按理说应该首先对这个人进行认证。这里所说的授权和认证就是由OAuth2.0和OpenID2.0来完成的。 1.1 0penID2.0 1.1.1 协议主体: 1.用户(End User),想要使用某网站资源的网站访问者,或用户代理。 2.OpenID依赖方(Relying Party,简称RP),即我们所说的支持OpenID登录的第三方网站或应用。 3.OpenID提供者(OpenID Provider,简称OP),OpenID提供商网站,用户需要在OpenID提供商那里注册,获取一个有效的OpenID标识,才能在支持OpenID的RP使用OpenID登录,在OAuth中,大多数情况下扮演资源提供者的角色。 1.1.2 认证过程: 1.用户访问RP网站时,被要求需要登录此网站才能使用某些服务。 2.用户选择了OpenID登录,RP跳转到了OpenID登录界面。 3.用户输入OpenID标识。 4.RP接收用户的OpenID标识,将其规范化。 5.根据规范化之后的OpenID标识发现OP。 6.与OP建立联系。 7. OP确认建立联系,返回确认信息。 8.RP将用户输入的OpenID标识发送给OP请求认证。 9. OP确认此用户是否是网站已注册OpenID的用户。 10.确认完成后,将认证消息回复给RP。 11.RP核实认证信息。 12. 用户被OP认证之后,以真正的用户身份访问RP。 认证过程如下图所示: 用户通过他们的用户代理向RP提供一个User-Supplied标识来初始化认证过程。认证过程的初始化就是RP给用户提供一个表单用于输入User-Supplied。用户输入之后,RP将User-Supplied规格化,RP执行自动发现来确定用户所使用的OP终点URL,自动发现是指RP使用标识来查询初始化请求所必须的信息的过程。由RP主动发起关联会话请求与OP关联,会话有3种有效的类型: ”no-encryption”、”DH-SHA1”和”DH-SHA256”,分类依据是请求消息的的签名算法。关联成功之后,RP让用户代理带着认证请求参数重定向到OP。认证请求参数应包括下面字段: OP确定用户是否愿意接受OpenID认证(通常要求用户输入密码),OP认证后让用户代理重定向到RP,参数中指明认证通过还是认证失败。RP校验从OP接收到的消息,OP认证成功的消息包含的字段有: 如果认证不成功,则OP发送给RP一个认证失败的断言。依赖方校验从OP发来的响应信息,包括检查Return URL,验证自动发现信息,检查nonce,并用在association阶段建立的共享密钥或发送一个直接请求给OpenID提供方来验证签名。 1.2 0Auth2.0 1.2.1 协议主体: 1.客户端:获取授权和请求受保护资源的应用 2.资源拥有者:能够对受保护资源进行访问控制许可的实体 3.资源服务器:能够接受和响应资源请求的服务器 4.授权服务器:能够进行授权和令牌发放的服务器(可以和资源服务器是同一个,也可以不是同一个) 1.2.2 协议的主要流程包括: 1、用户访问第三方网站时,第三方网站想对用户存放在服务商的某些资源进行操作。 2、第三方网站向服务商请求一个临时令牌。 3、服务商验证第三方网站的身份后,授予一个临时令牌。 4、第三方网站获得临时令牌后,将用户导向至服务商的授权页面请求用户授权,然后这个过程中将临时令牌和第三方网站的返回地址发送给服务商。 5、用户在服务商的授权页面上输入自己的用户名和密码,授权第三方网站访问相应的资源。 6、授权成功后,服务商将用户导向第三方网站的返回地址。 7、第三方网站根据临时令牌从服务商那里获取访问令牌。 8、服务商根据令牌和用户的授权情况授予第三方网站访问令牌。 9、第三方网站使用获取到的访问令牌访问存放在服务商的对应的用户资源。 主要的交互过程如下: 客户端(或第三方网站)想要访问客户在资源服务期上的某些受保护资源时,向资源拥有者提出授权请求,资源拥有者返回给客户端一个访问许可(临时令牌),客户端将访问许可和客户端凭证发送给授权服务器,授权服务器在这个过程中会请求用户的授权,用户授权成功后,授权服务器返回给客户端一个访问令牌,客户端拿着访问令牌访问客户在资源服务器的受保护资源,资源服务器验证了客户的访问令牌后,将受保护的资源返回给客户端。 2 认证授权方案的设计与实现 上文介绍的认证协议和授权协议的流程分开来看已经很清晰,本文的重点是设计一个同时应用OpenID2.0和OAuth2.0的方案。在用户个人资料被其他网站共享之前,先完成对这个网站的身份认证。 如上图所示:用户A浏览网站B,欲使用B的服务,B要求A登录后才能使用,A使用C的身份登录,登录时并未授权,只是完成了身份的认证,此时A已经成为了B的一个用户,而B若想访问A在C的受保护资源,则另需得到A的同意,即完成授权。 在上图中,网站C就是OpenID2.0协议中的身份提供商OP。当认证完成后,除了上文提到的认证响应的返回消息中的字段之外,网站C还应该为用户A生成一个唯一用户标识UID以及UID的有效时长,用来识别A在非C网站或应用的身份。应用B需将此UID与用户A关联,在上图的步骤8中,若是B需要访问A在C的受保护资源,请求授权时的参数需要带上UID字段,以此证明B已经经过认证。而C只有在B的授权请求中携带UID字段且字段正确,并且时间在有效期之内的情况下才请求用户确认,用户根据情况判断是否授权。 现在很多主流的OP都没有认证这一步,当需要用户登录时,有的直接强迫用户授权,先授权再登录,如图4和图5所示,使用人人账号登录去哪网与使用淘宝账号登录团800,人人网和淘宝网作为OpenID提供商,允许去哪网和团800共享自己的用户。如图6所示,使用微博账号登录美团,这个登录并没有需要用户授权,但是,当用户用微博账号登录美团之后,在浏览器中访问新浪微博,微博已经处于登录状态,虽然这个登录没有需要用户授权,但是完成的功能也已经超过了认证。 3 总结 对于一部分用户,他们只想减少需要记忆的用户名和密码个数,并不想在多个网站共享一份个人信息,例如人际关系、相册等信息。这和单点登录不太一样,单点登录在用户认证完成之后,用户会获得一个访问令牌,这个令牌成为用户在整个系统间的通行证。而本文只是在多个系统之间共用一个用户名和密码,并不能共享其他信息。OpenID提供商可以应用本文的设计,只需要利用OpenID2.0进行认证即可,用户可以使用同一个身份登录不同的网站,只需要记忆一个用户名密码。认证成功之后,用户可以自主选择是否对RP授权,使其访问自己在OP的个人信息,对于想要访问用户在OP服务器上个人信息的第三方网站,OP可以引导用户拒绝认证。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。