OAuth2.0协议在科研项目管理系统的设计与实现
2021-12-11龙辉
龙 辉
(四川省科学技术信息研究所,四川 成都 610016)
0 引言
目前科研项目管理体系内存在不同级别、不同类型的科研项目管理系统,分别由不同的开发单位独自建设,因此科研人员需要记忆并管理大量不同网站的账号和密码,且每次访问不同的子系统都需要重新输入、切换登录用户。这一传统过程极大浪费了科研人员的工作时间和精力。通过研究并设计一套基于 OAuth2.0的统一身份认证系统,实现科研体系内部多个子系统间的互信互访,帮助科研人员简便、高效地实现科研项目的研究与管理,极大地提高科研效率,节约人力成本,推进技术创新。
1 技术原理
OAuth2.0(全称为Open Authorization 2.0)协议作为一个开放授权标准草案,能很好地解决开放平台中的安全授权和资源共享问题,通过在第三方应用与服务提供商之间设置授权层,将用户与客户端区安全分离。用户无需暴露账号密码,只需要在授权的时候指定授权层令牌的权限范围和有效期,服务提供商根据此范围和有效期,向第三方应用开放用户资源。
该协议的基本原理[1]见图1。
图1 基本原理Fig.1 basic theory
如图1所示,OAuth2.0的基本工作流程是:
(1)当用户打开第三方应用后,客户端要求用户给予授权;
(2)用户同意授权;
(3)第三方应用客户端使用上一步获得的授权,向认证服务器申请令牌;
(4)认证服务器对第三方应用进行认证以后,确认无误,同意发放令牌;
(5)第三方应用使用令牌向资源服务器请求获取受保护的资源;
(6)资源服务器确认令牌,同意向第三方应用开放访问权限。
2 优势
OAuth2.0虽然被认为是OAuth1.0的延续[2],但两个版本的协议并不能相互兼容,2.0针对1.0的各种问题提供了解决方法,且2.0版本更关注考虑第三方开发者的简易性,具有更大的优势[3-7]:
(1)OAuth2.0为第三方应用获取授权提供了更多的模式,各个客户端可按照实际情况选择不同的流程来获取授权令牌。这样就扩大了第三方应用的接入范围,也解决了拓展性的问题;
(2)OAuth2.0删除了繁琐的加密算法,通过https传输对认证的安全性提供保障;
(3)OAuth2.0通过引入授权服务器,使得认证流程只有2步:第三方应用在资源服务器处获得认证码,然后向授权服务器申请Access Token,这减轻了开发者的负担;
(4)OAuth2.0提出了授权令牌的更新方案,第三方应用在获取令牌的同时也获取 refresh_token,一般来说令牌是有过期时间的,而refresh_token的过期时间较长,这样便能随时通过refresh_token对access_token进行更新。
3 系统实现
3.1 请求令牌
1、功能:用户在服务端登录页面登录并授权后,向资源服务器请求令牌。
2、API接口:
/authorize?response_type=
其中,response_type为授权方式,client_id为客户端ID,state为授权安全随机码。
3、返回值:返回结果为如下Json格式:
3.2 用户信息
1、功能:本接口可获取科研用户及专家的账号信息。
2、API接口:
3.3 单位信息
1、功能:本接口可以获取科研人员关联的单位或公司信息。
2、API接口:
4 结论
基于 OAuth2.0协议在科研项目管理体系中为不同异构子系统之间营造一个安全的信息传递环境[8],并向用户提供可靠的认证和授权方式[9],有效解决了大型科研项目管理服务体系中各个子系统间资源共享的难题,简化了程序设计,改善了各系统间的兼容性,提高了平台的总体性能[10]。目前,该统一用户认证授权接口系统已在四川省科研项目管理平台和科技报告呈交共享系统之间得到应用,经过实际运行证明其设计思想是正确和可行的,为今后类似系统的设计开发提供了借鉴和参考。