基于接口方式高可靠性认证的应用设计和实现
2021-07-05孙新江
孙新江
(上海市国有资产信息中心 上海市 200003)
随着我国数字化的进程不断的推进,特别是城市数字化的大力发展。我国已经具备数字化转型的条件储备,数字化市场巨大。数字化专业人才大量激增。因为我国目前还处于数字化转型的初期,因此数字化蓬勃发展的同时,特别是业务场景的多样化,数字化的应用开发很难做到数字化的系统不断的增多并且市场未有统一的标准。不同开发者和不同的系统之间的用户认证系统之间实现的功能不尽相同。如何实现用户的迁移,特别是系统的切换不会影响用户的体验,一直是困扰各个系统的一个难题。
本文结合单位多系统建设与管理的实际情况。处理不同系统对用户的不同管理,特别是不同角色的用户的登陆权限的管理等。采用了跨认证系统的应用设计与实现。有效的综合利用不同统一身份认证系统的优势。既满足不同应用的统一身份认证的要求,又能提高了系统的高可靠性保障。同时实现了系统切换统一身份认证系统,但并不影响用户体验。特别是为解决不同认证系统内部账号不唯一的问题提供了思路。本文将详细解释了基于oauth 接口的双认证系统的互相印证、基于账号标识的方式事项不同系统账号统一管理、基于统一密码修改的双系统账号权限处理方式,实现了多套认证系统的不同账号体系的统一管理。通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义。特别是当前商用环境中应用系统逐渐增多后,每个系统单独管理各自的用户数据容易行成信息孤岛,分散的用户管理模式阻碍了商业应用向平台化演进。当企业的互联网业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业互联网云平台的重要基础设施,能够为平台带来统一的帐号管理、身份认证、用户授权等基础能力,为企业带来诸如跨系统单点登录、第三方授权登录等基础能力,为构建开放平台和业务生态提供了必要条件。用户对于高可靠性认证的需求会随着应用的发展,以及价值数据越来越高的而更加迫切。
OAuth 2.0 是用于授权的行业标准协议。OAuth 2.0 取代了在2006年创建的原始OAuth 协议上所做的工作。OAuth 2.0 专注于客户端开发人员的简单性,同时为Web 应用程序,桌面应用程序,手机和客厅设备提供特定的授权流程。本文介绍的方案的接口交互都是基于可靠的Oauth2.0 协议,因此对当前大多数实际商业环境面临的问题都能提供参考和思路。OAuth 定义了四种角色:
(1)资源所有者,即能够许可对受保护资源的访问权限的实体。当资源所有者是个人时,它被称为最终用户。
(2)资源服务器,即托管受保护资源的服务器,能够接收和响应使用访问令牌对受保护资源的请求。
(3)客户端,即使用资源所有者的授权代表资源所有者发起对受保护资源的请求的应用程序。术语“客户端”并非特指任何特定的的实现特点(例如:应用程序是否是在服务器、台式机或其他设备上执行)。
(4)授权服务器,即在成功验证资源所有者且获得授权后颁发访问令牌给客户端的服务器。其中授权服务器可以和资源服务器是同一台服务器,也可以是分离的个体。一个授权服务器可以颁发被多个资源服务器接受的访问令牌。
1 传统统一身份认证体系
所谓身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。复杂一些的身份认证方式采用一些较复杂的加密算法与协议,需要用户出示更多的信息(如私钥)来证明自己的身份。身份认证一般与授权控制是相互联系的,授权控制是指一旦用户的身份通过认证以后,确定哪些资源该用户可以访问、可以进行何种方式的访问操作等问题。在一个数字化的工作体系中,应该有一个统一的身份认证系统供各应用系统使用,但授权控制可以由各应用系统自己管理。统一身份认证系统的设计采用层次式结构,主要分为数据层、认证通道层和认证接口层,同时分为多个功能模块,其中最主要的有身份认证模块和权限管理模块。其中,身份认证模块管理用户身份和成员站点身份。该模块向用户提供在线注册功能,用户注册时必须提供相应信息(如用户名、密码),该信息即为用户身份的凭证,拥有该信息的用户即为统一身份认证系统的合法用户;身份认证模块还向成员站点提供在线注册功能,成员站点注册时需提供一些关于成员站点的基本信息,还包括为用户定义的角色种类(如普通用户、高级用户、管理员用户)。权限管理模块主要有:成员站点对用户的权限控制、用户对成员站点的权限控制、成员站点对成员站点的权限控制。用户向某成员站点申请分配权限时,需向该成员站点提供他的某些信息,这些信息就是用户提供给成员站点的权限,而成员站点通过统一身份认证系统身份认证后就可以查询用户信息,并给该用户分配权限,获得权限的用户通过统一身份认证系统身份认证后就可以以某种身份访问该成员站点。成员站点对成员用户信息/角色、权限信息站点的权限控制主要是成员站点控制向其它成员站点提供的调用接口。
传统的统一身份认证中,由一个统一认证中心接管原分散再各个系统上的身份认证模块的功能。由位于认证中心的唯一用户信息数据库统一对用户身份进行认证。这种方式目前不能满足越来越复杂的应用场景,特别是对于高可靠性要求以及应用系统的频繁切换,认证系统的迁移等场景要求。传统统一身份认证流程,如图1所示具体为:
图1
(1)用户在统一身份认证中心进行注册,经管理员确认后生效。
(2)用户登陆到信任域中的任何一个应用系统。
(3)用户在应用系统弹出的身份认证界面输入用户名和密码。
(4)统一身份认证中心为该用户创建一个票据(ticket),并将票据返回用户,同时重定向到应用系统。
(5)用户将票据提交给应用系统。
(6)应用系统将票据发给统一身份认证中心进行验证。
(7)统一身份认证服务器通过查询用户身份信息数据库来判断票据的有效性,并将验证结果及相关用户属性返回给应用系统。
(8)经过身份认证后,应用系统根据统一身份认证服务器的返回结果,继续后续的流程。
2 跨认证系统身份认证和管理
对于传统统一身份认证的可靠性和实际实践中对于统一身份认证的高可靠性要求,笔者设计和实现了如图2所示的基于接口传输认证方式的高可靠性的统一身份认证模式。该模式不仅可以实现身份认证的高可靠性,还可以实现不同认证系统的平稳迁移。为解决实际问题提供了思路和方法。具体流程如下:
图2
(1)用户在统一身份认证中心A 进行注册,经管理员确认后生效。
(2)应用系统注册到统一身份认证中心B。
(3)应用系统通过接口拉取统一身份认证中心A 的原用户数据,并推送至统一身份认证中心B。
(4)新建用户在统一身份认证中心B 进行注册,经管理员确认后生效。
(5)原用户登陆统一身份认证中心A 的信任域中的任何一个应用系统。
(6)原用户在应用系统弹出的身份认证界面输入用户名和密码。
(7)统一身份认证中心A 为该原用户创建一个票据(ticket),并将票据返回原用户,同时重定向到应用系统。
(8)原用户将票据提交给应用系统。
(9)应用系统将票据发给统一身份认证中心B 进行验证。
(10)统一身份认证中心B 将用户数据发送给统一身份认证中心A 进行验证。
(11)统一身份认证中心A 服务器通过查询原用户身份信息数据库来判断票据的有效性,并将验证结果及相关原用户属性返回给统一身份认证中心B。
(12)统一身份认证中心B 服务器将验证结果及相关用户属性返回给应用系统。
(13)经过身份认证后,应用系统根据统一身份认证中心B 服务器的返回结果,继续后续的流程。
(14)新建用户登陆到统一身份认证中心B 信任域中的任何一个应用系统。
(15)统一身份认证中心B 服务器通过查询用户身份信息数据,若不在统一身份认证中心A 的原数据当中,则新建用户数据,并将数据推送给统一身份认证中心A 中。
(16)新建用户经过身份认证后,应用系统根据统一身份认证中心B 服务器的返回结果,继续后续的流程。
3 进一步研究的问题
目前,我们对于不同认证系统的数据结构还需要人员干预,处理两个系统的数据结构差异性、用户唯一性标识、用户注销和禁用等行为。接下来需要进一步研究。
(1)不同统一身份认证中心系统的用户信息重复的数据如何进行数据结构统一。
(2)不同统一身份认证中心系统的唯一标识的数据结构统一。
(3)不同统一身份认证中心如何自动化做到统一的用户注销和用户禁用,和不同应用系统个性化的用户管理。
4 结论
构建高可靠性的统一身份认证体系,对于复杂商用环境特别是金融业业务系统大集中的场景下意义重大。本在身份认证集中化、信息化等方面作了一定的探索和研究,在实际使用也展现了良好的应用前景。高可靠性统一身份认证体系将是大势所趋,各复杂商用场景,特别是金融机构不应只拘泥于机构内部的身份统一,在机构间建立基于安全可靠的信任关系,能够为加强经济信息互通互联,促进金融发展带来前所未有的机遇。本文介绍的基于高可靠性的统一身份认证体系,为后续的统一身份认证研究和应用提供了思路。进一步研究的问题为后续研究和设计提供了方向。通过进一步研究的问题的解决,高可靠性的统一身份认证系统会更加受到用户的青睐。能够消除对于重要应用平台的开放和上云的顾虑。进一步加强对资源的利用率,有效提高数据的共享和数字化在生产生活中的应用。特别是对于数字产业化和产业数字化的背景下,行业以及复杂商用场景都亟需一套安全可靠的认证系统。高可靠性的统一身份认证体系的发展,能够为此提供有效的解决方案。