分布式协同统一身份认证平台的设计与实现
2020-10-23彭勇黄剑华王喆王全亮王欢
彭勇 黄剑华 王喆 王全亮 王欢
摘 要:针对现代信息门户用户访问量大、信息系统集成数量多的特点,信息系统身份认证分散、用户体验差等问题。本文设计了一种分布式协同统一身份认证平台。平台提供认证服务、目录服务、接口服务、负载均衡和数据同步等功能。利用CA数字证书和SSL协议,增强认证和传输过程中的安全性;采用SSO代理和服务器的模式实现用户的单点登录。通过票据同步、Redis共享数据和身份漫游等技术实现分布式协同身份认证。本文设计的分布式协同统一身份认证平台,能够有效地解决信息系统分散的问题,提升用户体验。
关键词:统一身份认证;分布式;身份漫游
中图分类号:TP393 文献标识码:A
Design and Implementation of Distributed Cooperation and
Uniform Identity Authentication Platform
PENG Yong, HUANG Jianhua, WANG Zhe, WANG Quanliang, WANG Huan
(Guangxi University of Science and Technology, Liuzhou 545006, China)
pengyong@gxust.edu.cn; 872874889@qq.com; 751602523@qq.com;
wqlet@qq.com; wanghuan@gxust.edu.cn
Abstract: Currently, large numbers of visits and highly-integrated information system lead to the scattered identity authentication and poor user experience. This paper proposes a distributed collaboration and uniform identity authentication platform. It provides functions such as authentication services, directory services, interface services, load balancing, and data synchronization. CA (Certificate Authority) digital certificate and SSL (Secure Socket Layer) protocol are used to enhance the security in authentication and transmission process. SSO (Single Sign-on) agent and server mode are used to realize single sign-on. Distributed collaboration and uniform identity authentication are achieved through technologies such as ticket synchronization, Redis shared data, and identity roaming. The proposed identity authentication platform can effectively coordinate decentralized information systems, and improve user experience.
Keywords: uniform identity authentication; distributed; identity roaming
1 引言(Introduction)
随着信息技术的不断发展,政府、高校及企事业部门越来越重视信息化程度,对信息化建设进行了深入探索。近年来各级单位不断地提高自己的信息化水平,并逐步建立自己的信息门户,并将多种不同的信息系统进行组合和整合,以达到更好的服务广大用户的目的[1,2]。在信息化建设的过程中业报露出一系列的问题,这些问题在高校当中尤为突出,如用户登录入口繁多,缺乏统一的身份认证平台[3,4]。由于系统的管理部门不统一,进而形成多个登录入口,缺乏统一的身份认证平台,用户无法通过统一的入口来访问不同的信息系统。此外每个用户在不同的业务系统都拥有不同的账号和密码,经常出现用户账号密码混淆的情况[5,6]。
综上所述,当今各单位的信息化建设急需整体的规划和统一的门户平台,为各级用户提供统一的访问入口,打破信息孤岛的壁垒,最终形成统一的门户平台。然而,统一身份认证不仅是门户平台的重要组成部分,而且在整个平台中起到核心的关隘作用[7]。为此本文,针对现代信息门户用户访问量大、信息系统集成数量多的特点,设计了一种分布式协同统一身份认证平台,来提高信息化门户的安全性和便捷性。
2 统一身份认证需求分析(Analysis of unified identity authentication requirements)
2.1 平台的功能需求
(1)认证服务
統一身份认证平台提供的认证服务功能,就是要对现有的信息系统提供统一的登录认证服务,用户只需要进行一次认证就可以漫游至其他集成的信息系统,避免多次记录账号密码。此项功能主要完成以下两个方面的工作:一是对不同的信息系统账号进行统一管理,对系统资源进行统一分配。二是与各个子系统进行有效的对接,实现系统的单点登录和身份漫游[8]。
(2)统一共享数据服务
统一共享数据服务就是对所有信息系统的用户数据,按照统一数据标准建立共享数据库。共享数据库不仅存储用户的身份信息,还会存储各系统间的认证接口信息,进而实现统一的认证交互。
(3)认证接口服务
由于集成的信息系统种类繁多、开发的语言也不尽相同、部署的平台也具有多样性。为此统一身份认证平台要提供认证接口服务。接口服务主要具备以下功能:第一、跨平台的系统调用与多种语言支持;第二、单点登录认证和身份漫游;第三、支持多种协议,保证运行的可靠性。
(4)负载均衡
由于统一身份认证平台承载着大量用户的并发访问,为了保证认证平台的安全平稳运行,需要进行负载均衡设计和部署。通过负载均衡技术协调多个分布式认证服务器协同工作,避免单点故障的出现,从而影响平台的可靠性。
(5)数据同步服务
由于各个信息系统每天更新的数据较为频繁,用户变更频率也较高,依赖人工同步难以及时完成,为此统一身份认证平台需要提供数据同步服务,定时的向子系统推送和拉取数据,以确保认证信息更新的及时性。
2.2 用户角色需求
统一身份认证平台最典型的场景就是高校的数字化校园平台。下面以高校的统一身份认证平台为例,进行用户角色分析。角色分析主要是确定用户的种类和角色,在统一身份认证的过程中,通常可以分为普通用户和系统管理员两部分,二者因为角色不同、权限不同,所以具备的功能也不同,本文以用例图的方式对其进行分析,二者的用例图分别如图1和图2所示。
由图1可知,通常情况下普通用户会包括登录、注册、注销和进入系统等四类操作。其中在登录的过程还会进行登录验证和SSO代理两部分操作。
由图2可知,与普通用户不同,系统管理员用例包括用户管理、账号的关联设置、角色配置、权限配置、应用管理等六个操作,实现对整个认证平台的管理。
3 身份认证安全性设计(Identity authentication security design)
由于当前大多数信息系统都是采用web架构进行设计。为此本文的设计方案主要是针对基于web的应用系统。在身份认证平台的设计过程中,主要考虑两种情况:一种是已经建成的web应用系统;另一种新建的应用系统。对于已经建成的应用系统,平台提供组件认证功能,应用系统通过此功能,将自身用户的账号密码与统一身份认证平台的账号进行关联;对于新建的应用系统,应用系统本身不在提供用户账号管理功能,此部分直接与统一身份认证平台对接,由认证中心完成。此外,本文还考虑了统一身份认证平台的安全性,将CA数字证书集成到设计方案中,保证数据安全。用户在认证时,不再是输入传统的用户名和密码,还有符合要求的是数字证书CA。
集成CA数字证书的身份认证过程如下:
(1)统一身份认证服务器通知CA认证服务器验证访问是否持有CA数字证书,如果没有数字证书则拒绝访问,并给出提示信息;如果持有数字证书,则通知统一身份认证服务器,并有统一身份认证服务器执行第(2)步。
(2)服务器验证用户输入的账号和密码,如果验证不通过,则提示用户;如果验证通过,则执行第(3)步。
(3)统一身份认证服务器获取身份信息,并进行数据同步,获取用户可以访问的资源列表。
(4)通过SSL协议建立数据传输通道,向用户展示可访问的资源列表。用户选择要访问的应用系统。
(5)统一身份认证系统通知认证服务器,建立漫游信息。
4 单点登录设计(Single sign-on design)
在整个统一身份认证平台中,单点登录模块起到核心的作用。在本文的单点登录设计采用的是集中式的架构。用户通过用户名、密码登录成功后,将获取到有认证服务器分发的认证令牌Token,令牌的唯一标识为用户的SessionID。采用此种模式设计主要是基于Session在同一次会话内相关信息会保留,可以维持服务器访问资源的持续性。本方案中,用户一旦通过用户名密码以及数字证书CA登录成功以后,系统就会与用户端建立一个会话,然后生成令牌分发给用户和其他认证服务系,这样用户就可以通过令牌进行身份漫游了。
单点登录过程的身份认证过程如图3所示。由图3可知,在本文设计的单点登录过程中,包含用户、登录、验证及应用系统四部分。
用户为应用系统的访问者;登录为提供统一入口的门户登录平台,此部分会采集用户的账号密码信息。验证提供身份认证操作,主要进行用户身份认证及认证令牌的生成和分发;应用系统为用户访问的对象,负责在本系统内容的身份生成和访问控制,并完成相关业务操作。此外应用系统在用户访问的时候还会识别用户的会话以及持有token令牌。如果令牌真实,则允许其访问;如果令牌无效,则跳转至登录页面。
用户申请访问某一个信息系统,信息系统判断用户的身份状态,如果发现其存在令牌,则根据漫游信息,向认证服务器获取身份信息,并允许其访问;如果发现其没有令牌,则返回登录入口,进行登录操作。单点登录的过程为:
(1)用户发起登录请求,服务器响应登录页面,用户输入账号和密码,向统一身份认证服务器发起请求,提交登录表单。
(2)认证服务端接收到请求后,提取表单数据,进行用户凭证的校验,并调用验证模块。
(3)驗证模块对用户的账号密码进行验证,并获取用户的ID及用户相关的其他信息,并将这些信息存储至Session对象中,同时做出响应。
(4)登录模块收到验证模块的响应后,收到用户的令牌Token,系统根据此令牌获取用户可以访问的资源列表,并将其显示在门户列表上。
(5)用户选择要访问的信息系统目录。
(6)用户端将获取到的令牌发送至认证服务端,对用户身份进行验证。
(7)认证服务端对用户的验证请求做出响应,并通知应用系统。
(8)应用系统响应用户请求,并生成用户在应用系统权限列表和功能集合,并在应用系统中进行展示。
5 分布式协同认证设计(Design of distributed authentication)
考虑到统一身份认证的高可用需求。本文采用分布式协同认证的方式来进行认证。本方案中,包括多台认证服务器和两台数据存储服务器。其中认证服务器负责采集用户的登录状态,而數据库服务器负责存储相关的登录信息。此外由于是多机协同工作,需要处理认证服务器和数据库服务器的数据同步和缓存。本方案采用Redis技术实现对认证会话Session、TGT票和ST票据的同步,实现数据同步的缓存和持久。
5.1 Session会话同步
由于本文采用的是分布式协同认证,所以不同子系统的有着不同的请求域。这就要求用户在访问和认证的过程中,要将Session信息同步到不同子系统中,从而保证用户认证后可以进行身份漫游,实现不同子系统的无缝切换。
为了实现会话同步,本文采用的是通过Redis技术将会话信息存储到共享数据库中,改变原有存储在web中间件内存中的存储方式,实现会话信息的持久化,并通过CAS的服务器端进行会话共享,进而实现多认证服务器的协同工作,实现用户的身份漫游。
5.2 认证票据
在基于CAS的认证方案中,包含着两种至关重要的票据TGT和ST,其中TGT为登录票据,ST为访问票据。其中登录票据TGT包含:ID、创建时间、过期策略、状态及最后的使用时间等信息。访问票据ST则包含着ID、访问目录、创建时间等信息。二者在认证的过程中,通过认证是否成功进行转换和同步,如果登录成功则将TGT同步转换为ST,如果不成功,则TGT销毁和终止。
5.3 Redis共享数据的存储结构
本文采用Redis方案存储统一身份认证中的TGT、ST票据和Session会话信息。利用哈希的原理,对这三个对象进行键值对的映射。在Redis得存储过程中,通过键值对方式进行存储。其中对于Session会话对象,其键key为Session会话的ID,值为Session对象;对于票据TGT、ST,其ID为序列化后通过MD5计算得到的值,值为序列化后对象。Redis存储方案中的具体数据结构如表1所示。
5.4 同步数据的实现
由于本文采用的是集群式的Redis部署方案,为此需要考虑集群之间的数据同步过程。本文在集群搭建的过程中,采用的是Sentinel流量控制框架,分别构造了三个数据节点和监控节点,从而保证集群系统的稳定运行。
集群中的三个数据节点中,一个节点为主节点,两个为从节点,形成了主从同步的高可用方案。其中主节点负责认证数据的写入,从节点负责数据的读取操作,二者通过中继推送的方式实现数据同步。在认证的过程主节点上会根据数据节点的负载情况,将认证请求分发至数据节点,进而实现负载均衡。
在集群中Sentinel流量控制框架被部署在监控节点上。监
控节点会对数据节点进行监控,在集群运行的过程中,如果发现某一个节点服务异常或者出现故障,则对节点进行故障标识,后续将不再分配访问流量,并通过邮件或者其他消息的形式通知给管理员,告知其及时处理。
6 结论(Conclusion)
针对现代信息门户用户访问量大、信息系统集成数量多的特点,信息系统身份认证分散、用户体验差等问题。本文设计了一种分布式协同统一身份认证平台。平台提供认证服务、目录服务、接口服务、负载均衡及数据同步等功能。利用CA数字证书和SSL协议,增强认证和传输过程中的安全性;采用SSO代理和服务器的模式实现用户的单点登录。通过票据同步、Redis共享数据,以及身份漫游等技术实现分布式协同身份认证。本文设计分布式协同统一身份认证平台,能够有效提高信息化门户的安全性和便捷性。
参考文献(References)
[1] 方乃钗.统一身份认证技术在机场的应用[J].江苏航空,2020 (02):34-35.
[2] 尹蕊,高阳,李凯,等.身份认证技术在电力行业移动应用中的应用[J].中国新通信,2020,22(10):116.
[3] Entao Luo,Kehua Guo,Yayuan Tang,etal.Hidden the true identity and dating characteristics based on quick private matching in mobile social networks[J].Future Generation Computer Systems,2020(109):633-641.
[4] Quan Liu,Bei Gong,Zhenhu Ning.Research on CLPKC-IDPKC cross-domain identity authentication for IoT environment[J].Computer Communications,2020(157):410-416.
[5] 贾悠,叶常华,卢宇浩,等.一种基于安全标签的单向身份认证技术[J].通信技术,2020,53(05):1231-1234.
[6] 徐安令.基于三大平台的高校数字化校园应用系统整合集成设计[J].科技资讯,2020,18(06):29;31.
[7] 王群,李馥娟.一种基于单点登录的实验室统一身份认证方案[J].实验技术与管理,2020,37(05):219-223.
[8] 江泽涛,徐娟娟.云环境下基于签密的异构跨域身份认证方案[J].计算机应用,2020,40(03):740-746.
作者简介:
彭 勇(1975-),男,硕士,工程师.研究领域:数字化校园,网络与信息安全.
黄剑华(1982-),男,硕士,工程师.研究领域:计算机网络,密码学.本文通讯作者.
王 喆(1989-),女,硕士,助理研究员.研究领域:网络舆论安全.
王全亮(1989-),男,硕士,讲师.研究领域:教育技术.
王 欢(1987-),男,博士,副研究员.研究领域:网络与信息安全.