CN112153041A - 一种基于用户同步实现多系统单点登录的方法及其系统 - Google Patents
一种基于用户同步实现多系统单点登录的方法及其系统 Download PDFInfo
- Publication number
- CN112153041A CN112153041A CN202010995153.XA CN202010995153A CN112153041A CN 112153041 A CN112153041 A CN 112153041A CN 202010995153 A CN202010995153 A CN 202010995153A CN 112153041 A CN112153041 A CN 112153041A
- Authority
- CN
- China
- Prior art keywords
- user
- service system
- single sign
- information
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于用户同步实现多系统单点登录的方法及其系统,包括多个相关且彼此独立的业务系统,单点登录HTTP服务器,一方面用于处理各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;另一方面用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;单点登录验证服务器,用于验证各业务系统提交的通行证TICKET的有效性;各业务系统与单点登录HTTP服务器、单点登录验证服务器连接。本发明能够实现在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,其只涉及两个模块,接口少,流程简单,还支持CA认证,安全性高,支持扩展第三方认证平台。
Description
技术领域
本发明涉及一种基于用户同步实现多系统单点登录的方法,属于单点登录技术领域。
背景技术
单点登录英文全称为Single Sign On,简称SSO,是比较流行的企业业务整合的解决方案之一,它的解释是:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录是一种控制多个相关但彼此独立的系统的访问权限,拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统。业务系统是指单点登录所涉及的具体的业务系统,涉及到系统间跳转流程时,分为来源业务系统和目标业务系统。用户/客户端是指业务系统的使用者。
目前,实现单点登录的方案有很多,但大都协议多,接口多,需要对接入系统进行大量的开发改造,集成复杂,处理流程复杂。此外,现有的单点登录系统不支持现有主流第三方认证平台,如CA证书认证、微信登录认证、QQ登录认证等,安全系数低。
发明内容
针对上述现有技术存在的问题,本发明提供一种基于用户同步实现多系统单点登录的系统及其方法,能够实现在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,其只涉及两个模块,接口少,流程简单,还支持CA认证,安全性高,支持扩展第三方认证平台。
为了实现上述目的,本发明采用如下技术方案:一种基于用户同步实现多系统单点登录的方法,包括:
步骤S1、单点登录HTTP服务器获取登录请求,并对登录请求进行认证;若验证失败,则返回错误信息至客户端,流程结束;若验证成功,则记录当前登录的用户,并根据当前用户生成一个唯一的通行证TICKET,同时将当前用户信息和通行证TICKET发送至业务系统;
步骤S2、业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S3、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
步骤S4、业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功;若需跳转至与当前业务系统相关且彼此独立的其它业务系统,则业务系统根据需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器;若需结束操作,直接退出即可,流程结束;其中,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
步骤S5、单点登录HTTP服务器对接收到的当前登录用户信息和通行证TICKET的有效性进行校验,若校验不通过,则直接返回错误信息至客户端,流程结束;若校验通过,则将用户信息和通行证TICKET发送至目标业务系统;
步骤S6、目标业务系统接收用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S7、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至目标业务系统;
步骤S8、目标业务系统接收验证成功信息,将返回的用户信息和TICKET存储到会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
基于用户同步实现多系统单点登录的方法中,所述步骤S1中单点登录HTTP服务器获取登录请求有两种,一种是包括用户名和密码的用户信息,另一种是包括CA认证、用户名和密码的信息;包括用户名和密码的用户信息由用户直接打开业务系统登录界面输入,再由业务系统将输入的用户名和密码发送至单点登录HTTP服务器进行认证;包括CA认证信息、用户名和密码的信息由用户插入CA KEY,并打开业务系统登录界面输入的用户名和密码,单点登录HTTP服务器对业务系统发送的密码信息和读取CA KEY的信息进行认证。
基于用户同步实现多系统单点登录的方法中,若业务系统需要进行CA认证,则在所述步骤S5之前先进行CA认证,若认证通过,则执行步骤S5;若认证不通过,则直接返回错误信息至客户端。
基于用户同步实现多系统单点登录的方法中,所述步骤S5具体包括:
步骤S5-1、通行证TICKET有效性验证:单点登录HTTP服务器对接收到的通行证TICKET有效性进行校验,若无效,则直接返回错误信息至客户端,流程结束;若有效,则跳至步骤S5-2;
步骤S5-2、权限验证:校验当前用户是否有目标业务系统的访问权限,若没有权限,则返回错误信息至客户端,流程结束;若有权限,则将通行证TICKET发送至目标业务系统。
基于用户同步实现多系统单点登录的方法中,若目标业务系统需要进行CA认证,则在所述步骤S7之前先进行CA认证,验证客户端的CA与用户信息记录的CA是否一致,若一致,则认证通过,跳转至步骤S7;若不一致,则认证不通过,直接返回错误信息至客户端。
基于用户同步实现多系统单点登录的方法中,所述通行证TICKET由java.util.UUID生成一个随机字符串,用户登录验证通过后,将生成的通行证TICKET与用户信息UserInfo以KEY-VALUE的方式存入Redis数据库,UserInfo里有当前用户可访问的业务系统列表。
一种基于用户同步实现多系统单点登录的系统,包括多个相关且彼此独立的业务系统,还包括:
单点登录HTTP服务器,一方面用于处理各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;另一方面用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;
单点登录验证服务器,用于验证各业务系统提交的通行证TICKET的有效性;
各业务系统与单点登录HTTP服务器、单点登录验证服务器连接。
基于用户同步实现多系统单点登录的系统中,所述业务系统登录包括:
业务系统将登录请求发送至单点登录HTTP服务器;
单点登录HTTP服务器对登录请求内的用户信息、是否有访问业务系统的权限进行验证;若验证不通过,则返回错误信息至客户端,流程结束;若验证通过,则记录本次登录的信息,并针对当前用户生成一个唯一的通行证TICKET,将当前用户信息和通行证TICKET发送至业务系统;
业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
其中,若业务系统需要进行CA认证时,单点登录HTTP服务器对登录请求内的用户信息验证之前先判断客户端CA与用户信息记录的CA是否一致,不一致则返回报错。
基于用户同步实现多系统单点登录的系统中,所述业务系统间的跳转包括:
用户成功登录一业务系统;
业务系统根据跳转需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
单点登录HTTP服务器对接收的通行证TICKET进行校验是否有效,并校验当前用户是否有目标业务系统的访问权限,如果校验不通过,则返回错误信息;如果校验通过,则将通行证TICKET发往目标业务系统;
目标业务系统收到通行证之后,通过单点登录验证服务器校验该通行证TICKET的有效性,若通行证有效,则提示用户登录成功;若无效,则返回错误信息至客户端。
当目标业务系统需要进行CA认证时,单点登录服务器在校验通行证TICKET之前先进行CA校验,若读取的客户端CA与用户信息记录的CA一致,则继续校验通行证TICKET;若不一致,则返回报错。
与现有的技术相比,本发明具有如下优点:
1、本发明设置单点登录HTTP服务器和单点登录验证服务器,单点登录HTTP服务器用于向各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;同时用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;单点登录验证服务器则用于验证各业务系统提交的通行证TICKET的有效性;通过单点登录HTTP服务器和单点登录验证服务器的配合即可实现用户只需要登录一次就可以访问所有相互信任的业务系统,即可实现多个相关且彼此独立的业务系统之间的登录和跳转,涉及两个模块,接口少,流程简单;
2、本发明可支持无CA认证和有CA认证两种模式,适用范围广泛;而且通过CA认证可进一步提高其系统的安全性,支持扩展第三方认证平台。
附图说明
图1为本发明无CA认证时的单点登录时序图;
图2为本发明有CA认证时的单点登录时序图;
图3为本发明业务系统之间的跳转时序图;
图4为本发明用户信息实体类UserInfo代码示意图;
图5为本发明业务系统信息实体类ServiceSystemInfo代码示意图;
图6为本发明负责单点登录、系统间跳转的控制类代码示意图。
具体实施方式
下面结合附图对本发明实施中的技术方案进行清楚,完整的描述,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于用户同步实现多系统单点登录的系统,包括多个相关且彼此独立的业务系统、单点登录HTTP服务器和单点登录验证服务器,各业务系统与单点登录HTTP服务器、单点登录验证服务器连接;所述单点登录HTTP服务器一方面用于处理各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;另一方面用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;所述单点登录验证服务器用于验证各业务系统提交的通行证TICKET的有效性。其中,单点登录HTTP服务器采用B/S结构,负责处理应用系统的登录请求或各业务系统间跳转请求,包括校验提交的用户信息、CA信息和生成唯一的通行证TICKET等。单点登录验证服务器采用Web Service方式实现,即其以Web Service方式提供给各业务系统,用来验证通行证TICKET的有效性;通行证TICKET是用户在每一次有效的登录时,由单点登录HTTP服务器针对登录用户生成的唯一性标识,用于在用户跳转其他系统时验证登录用户的有效性。
基于用户同步实现多系统单点登录的系统中,所述业务系统单点登录包括:
业务系统将登录请求发送至单点登录HTTP服务器;
单点登录HTTP服务器对登录请求内的用户信息、是否有访问业务系统的权限进行验证;若验证不通过,则返回错误信息至客户端,流程结束;若验证通过,则记录本次登录的信息,并针对当前用户生成一个唯一的通行证TICKET,将当前用户信息和通行证TICKET发送至业务系统;
业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
其中,若业务系统需要进行CA认证时,单点登录HTTP服务器对登录请求内的用户信息验证之前先判断客户端CA与用户信息记录的CA是否一致,不一致则返回报错。
基于用户同步实现多系统单点登录的系统中,所述业务系统间的跳转包括:
用户成功登录一业务系统;
业务系统根据跳转需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
单点登录HTTP服务器对接收的通行证TICKET进行校验是否有效,并校验当前用户是否有目标业务系统的访问权限,如果校验不通过,则返回错误信息;如果校验通过,则将通行证TICKET发往目标业务系统;
目标业务系统收到通行证之后,通过单点登录验证服务器校验该通行证TICKET的有效性,若通行证有效,则提示用户登录成功;若无效,则返回错误信息至客户端。
若目标业务系统需要进行CA认证时,单点登录服务器在校验通行证TICKET之前先进行CA校验,若读取的客户端CA与用户信息记录的CA一致,则继续校验通行证TICKET;若不一致,则返回报错。
如图1至图4所示,本发明提供的一种基于用户同步实现多系统单点登录的方法,包括:
步骤S1、单点登录HTTP服务器获取登录请求,并对登录请求进行认证;若验证失败,则返回错误信息至客户端,流程结束;若验证成功,则记录当前登录的用户,并根据当前用户生成一个唯一的通行证TICKET,同时将当前用户信息和通行证TICKET发送至业务系统;
步骤S2、业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S3、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
步骤S4、业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功;若需跳转至与当前业务系统相关且彼此独立的其它业务系统,则业务系统根据需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器;若需结束操作,直接退出即可,流程结束;其中,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
步骤S5、单点登录HTTP服务器对接收到的当前登录用户信息和通行证TICKET的有效性进行校验,若校验不通过,则直接返回错误信息至客户端,流程结束;若校验通过,则将用户信息和通行证TICKET发送至目标业务系统;
步骤S6、目标业务系统接收用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S7、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至目标业务系统;
步骤S8、目标业务系统接收验证成功信息,将返回的用户信息和TICKET存储到会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
基于用户同步实现多系统单点登录的方法中,所述步骤S1中单点登录HTTP服务器获取登录请求有两种,一种是包括用户名和密码的用户信息,另一种是包括CA认证和密码的信息;包括用户名和密码的用户信息由用户直接打开业务系统登录界面输入,再由业务系统将输入的用户名和密码发送至单点登录HTTP服务器进行认证;包括CA认证信息和密码的信息由用户插入CA KEY,并打开业务系统登录界面输入密码,单点登录HTTP服务器对业务系统发送的密码信息和读取CA KEY的信息进行认证。
基于用户同步实现多系统单点登录的方法中,若业务系统需要进行CA认证,则在所述步骤S5之前先进行CA认证,若认证通过,则执行步骤S5;若认证不通过,则直接返回错误信息至客户端。
基于用户同步实现多系统单点登录的方法中,所述步骤S5具体包括:
步骤S5-1、通行证TICKET有效性验证:单点登录HTTP服务器对接收到的通行证TICKET有效性进行校验,若无效,则直接返回错误信息至客户端,流程结束;若有效,则跳至步骤S5-2;
步骤S5-2、权限验证:校验当前用户是否有目标业务系统的访问权限,若没有权限,则返回错误信息至客户端,流程结束;若有权限,则将通行证TICKET发送至目标业务系统。
基于用户同步实现多系统单点登录的方法中,若目标业务系统需要进行CA认证,则在所述步骤S7之前先进行CA认证,验证客户端的CA与用户信息记录的CA是否一致,若一致,则认证通过,跳转至步骤S7;若不一致,则认证不通过,直接返回错误信息至客户端。
单点登录HTTP服务器主要用于:为各业务系统提供登录验证并针对不同用户生成唯一的TICKET;各业务系统间跳转时提供跳转的URL、用户验证以及TICKET验证等。所述通行证TICKET由java.util.UUID生成一个随机字符串,用户登录验证通过后,将生成的通行证TICKET与用户信息UserInfo以KEY-VALUE的方式存入Redis数据库,UserInfo里有当前用户可访问的业务系统列表。其中,用户信息实体类UserInfo代码如图4所示,业务系统信息实体类ServiceSystemInfo代码如图5所示,负责单点登录、系统间跳转的控制类代码如图6所示。
单点登录验证服务器以WEBSERVICE方式提供给各业务系统,用来验证TICKET的有效性。验证TICKET有效性:以TICKET为KEY查询Redis看是否有对应的记录,如果有记录则说明TICKET有效,没有则无效。
服务接收的参数格式如下:
1)数据传输通过XML方式,统一格式定义如下:
<CONTENT>
<HEAD>
<TYPE></TYPE>
</HEAD>
<BODY>
…
</BODY>
</CONTENT>
2)返回业务系统的结果同样以XML方式传递数据,格式定义如下:
<RESULT>
<RETVALUE></RETVALUE>
<RETINFO></RETINFO>
</RESULT>
其中,RETVALUE表示处理结果代码:0-成功,1-TICKET过期,2-TICKET为空,9-数据格式错误,此处后期可扩展如加入用户信息。RETINFO表示处理结果信息。
实施例:
如图1所示,无CA认证,通过用户名、密码的登录流程包括:
步骤1、用户打开业务系统登录页面,输入用户名和密码,点击提交(对应图1中的时序1);
步骤2、业务系统将本次登录请求发送至单点登录HTTP服务器,要求验证用户名和密码(对应图1中的时序2);
步骤3、单点登录HTTP服务器对提交的用户信息进行认证,具体验证用户名、密码及用户是否有访问业务系统的权限,若验证不通过,则直接返回至客户端,流程结束(对应图1中的时序4);若验证通过,则记录本次登录信息,并针对当前用户生成一个唯一的通行证TICKET(对应图1中的时序5),同时将中心数据库用户ID、用户名和通行证TICKET通过POST的方式传递至业务系统(对应图1中的时序6);
步骤4、业务系统接收到通行证TICKET后,将中心数据库用户ID和通行证TICKET通过Web Service方式提交至单点登录验证服务器进行验证(对应图1中的时序7);
步骤5、单点登录验证服务器校验该通行证TICKET的有效性,如果无效,则返回错误信息至客户端;如果有效,则返回验证成功的信息至业务系统(对应图1中的时序8);
步骤6、业务系统接收验证成功信息,将中心数据库用户ID和通行证TICKET存储到用户的会话中,以便向其他业务系统单点登录时使用(对应图1中的时序9),并返回至主界面(对应图1中的时序10),提示用户登录成功。
对比图1和图2可见,有CA认证的情况下,相较于无CA认证,只需在验证用户名和密码是否正确之前,先判断客户端CA与用户信息表里的CA记录是否一致,不一致则返回报错。CA认证通过后,后续的用户名和密码验证以及其他登录流程不变。
具体的,单点业务系统登录流程如下:
1)用户打开业务系统1登录界面(根据系统需要插入CA-KEY),输入用户名和密码点击登录,表单数据以POST方式提交至单点登录HTTP服务器,表单需提供的数据表格如下:
表1
名称 | 编码 | 是否必须 |
用户名 | userName | 是 |
密码 | password | 是 |
CA-KEY | caId | 否 |
重定向URL | redirectURL | 否 |
单点登录HTTP服务器提供登录校验的URL,该URL地址包含了具体是哪个业务系统,如http://192.168.0.1/login.do?loginSystemId=1。
2)单点登录HTTP服务器针对登录名密码、CA-KEY、是否有访问权限等信息进行验证,过程如下:
(1)登录的用户名、密码或loginSystemId有为空的情况即返回客户端提示不能为空;
(2)根据用户名、密码查询数据库表ZC_YGXX和ZX_SSO获取员工信息UserInfo和用户可访问的系统列表userRelSystemList;
(3)如果UserInfo为空,则返回客户端提示“用户名或密码错误”;
(4)根据loginSystemId循环比较userRelSystemList,验证用户是否可访问业务系统,如果不能访问,则返回客户端提示“无访问业务系统权限”;
(5)根据loginSystemId查询数据库表INFO_SERVICESYSTEM获取业务系统信息:如果DELETEFLAG=1说明系统被删除,则返回客户端提示“业务系统被删除”;如果CAFLAG=1说明系统需要验证CA,若caId为空,则返回客户端提示“请插入CA-KEY”,若不为空,则跳转至CA验证页面validateCA.jsp;
(6)验证CA页面处理:读取客户端实际的CA-KEY与业务系统提交的caId进行比较,不一致则返回客户端提示“CA信息不一致”;
3)通过UUID算法生成之后单点登录的通行证TICKET,并将当前用户对应的中心数据库用户ID、通行证TICKET、登录时间、登录系统的用户名、业务系统ID存储至本地数据库中。按照中心用户TICKET-USERINFO的键值对方式存入MEMCACHED,先根据通行证TICKET查询是否有对应的记录,如果有则替换,没有则新增;每个通行证TICKET都有有效期,该有效期由单点登录平台统一进行设定,目前暂定8小时。超过8小时的通行证TICKET,在单点登录跳转的过程中,会提示用户通行证TICKET过期或无效,用户重新登录后即可获取新的通行证TICKET。
4)单点登录HTTP服务器通过POST方式返回中心数据库用户ID、用户名、通行证TICKET至业务系统1,参数如下表2所示:
表2
此时,业务系统需提供URL用于接收单点登录HTTP服务器传回的数据以及调用单点登录验证服务校验通行证TICKET的合法性,形如:http://<BUSINESS-SERVER1>/validateTicket.do。
5)单点登录验证服务器通过WEBSERVICE方式来验证TICKET的有效性(通过查询memcache),如果单点登录验证服务器无法连接,则返回客户端提示“无法连接单点登录验证服务”;如果验证服务正常:RETVALUE=0表示成功,则将用户信息和通行证TICKET存储会话中,以便单点登录至其他业务系统时用,并显示业务系统的主界面,在主界面的地址栏中要避免显示通行证TICKET值,以最大限度保证安全;RETVALUE=1表示通行证TICKET过期,则返回客户端提示“通行证失效,请重新登录”;RETVALUE=9表示单点登录验证服务器内部处理错误,返回客户端提示“验证服务处理出错”。
单点业务系统登录成功后,如图3所示,业务系统间的跳转流程如下:
步骤1、用户登录来源系统(指图3中的业务系统1,下同)后,点击指向目标系统(指图3中的业务系统2,下同)的URL。
具体的,该URL由单点登录HTTP服务器提供,包含了两个当前业务系统代码、当前登录用户在中心用户ID(如果来源系统含CA认证,需要带上CA KEY)、目标业务系统代码、TICKET的值和重定向目标系统的URL,传递到单点登录HTTP服务器方式采用如下表所示的POST方式,对于当前登录的用户名,统一按照UTF-8的标准对数据转码,以防因为中文或特殊字符导致编码上的问题。
表3
名称 | 编码 | 是否必须 |
中心数据库用户ID | ygId | 是 |
通行证 | TICKET | 是 |
来源系统ID | sourceSystemId | 是 |
目标系统ID | targetSystemId | 是 |
CA-KEY | caId | 否 |
目标系统URL | redirectURL | 否 |
URL格式如:
http://192.168.0.1/redirect.action?sourceSystemId=1&targetSystemId=2。
步骤2、发送上述表3中的信息至单点登录HTTP服务器进行验证;
步骤3、单点登录HTTP服务器先从来源系统ID(sourceSystemId)查询中心数据库表【INFO_SERVICESYSTEM】获取来源系统信息sourceSystemInfo对象,根据sourceSystemInfo.CAFLAG判断来源系统是否需要CA认证,具体如下:
a)若需要验证CA(CAFLAG=1),则获取来源系统提交的caKey:
i如果来源系统提交的caKey为空,则返回客户端,提示“请插入CA-KEY”;
ii如果来源系统提交的caKey不为空,则跳转至caKeyValidata.jsp,读取客户端实际的CA-KEY与业务系统提交的caKey进行比较,如果相同,则进行步骤4;如果不相同则返回至客户端,提示“与实际的CA-KEY不相同”。
b)不需验证CA(CAFLAG=0),直接进行步骤4;
步骤4、单点登录服务器验证用户信息:
获取URL里的TICKET参数,若TICKET参数值为空,则跳至错误页面,提示“TICKET参数为空”;若TICKET不为空,则通过查询memcache判断TICKET值是否存在:
(1)若不存在,则根据targetSystemInfo.LOGINPAGEURL获取目标系统的登录页面,然后跳转至目标系统登录页面;
(2)若TICKET存在,则验证目标系统是否可以访问:
根据targetSystemId查询【INFO_SERVICESYSTEM】表得到targetSystemInfo对象,如果targetSystemInfo为空,则返回客户端提示“没有找到目标系统”;根据targetSystemInfo.DELETEFLAG字段判断目标系统是否可以访问,如果不能访问(DELETEFLAG=1)则返回客户端提示“目标系统无法访问”;如果可以(DELETEFLAG=0),则进行(3)步骤。
(3)根据userId和targetSystemId查询ZC_SSO表是否有对应的记录判断用户是否具有目标系统的访问权限,如果有记录,则用户可以访问目标系统,进行(4)步骤;如果没有记录,则返回客户端提示“没有访问目标系统的权限”。
(4)根据目标系统对象信息targetSystemInfo.CAFLAG获取目标系统是否需要CA认证,具体如下:
a)若需要验证CA(CAFLAG=1),获取来源系统提交的caKey:
i如果来源系统提交的caKey为空则返回客户端,提示“请插入A-KEY”;
ii如果来源系统提交的caKey不为空,则跳转至caKeyValidata.jsp,读取客户端实际的CA-KEY与业务系统提交的caKey进行比较,如果相同则进行(5)步骤;如果不相同则返回至客户端,提示“与实际的CA-KEY不相同”。
b)不需验证CA(CAFLAG=0),进行(5)步骤;
(5)通过查询MEMCACHE判断TICKET是否有效,若无效,则直接转至错误的页面并显示相应的错误信息。
步骤5、如果验证通过,则根据redirectURL跳转至目标系统,如果redirectURL为空,则跳转至目标系统主界面targetSystemInfo.MAINPAGEURL,同时单点登录HTTP服务器通过POST方式返回中心数据库用户ID、用户名、TICKET等信息至目标系统,参数如下表4所示:
表4
名称 | 编码 | 是否必须 |
中心数据库用户ID | ygId | 是 |
用户名 | username | 是 |
通行证 | TICKET | 是 |
CA-KEY | caKey | 否 |
重定向URL | redirectURL | 否 |
步骤6、目标系统通过WEBSERVICE方式来验证TICKET的有效性:如果单点登录验证服务器无法连接,则返回客户端提示“无法连接单点登录验证服务”;如果单点登录验证服务器正常:RETVALUE=0表示成功,则将用户信息和TICKET存储会话中,以便单点登录至其他业务系统时用,并显示业务系统的主界面,在主界面的地址栏中要避免显示TICKET值,以最大限度保证安全;RETVALUE=1表示TICKET过期,则返回客户端提示“通行证失效,请重新登录”;RETVALUE=9表示单点登录验证服务器内部处理错误,返回客户端提示“验证服务处理出错”。
综上所述,本发明设置单点登录HTTP服务器和单点登录验证服务器,单点登录HTTP服务器用于向各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;同时用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;单点登录验证服务器则用于验证各业务系统提交的通行证TICKET的有效性;通过单点登录HTTP服务器和单点登录验证服务器的配合即可实现用户只需要登录一次就可以访问所有相互信任的业务系统,即可实现多个相关且彼此独立的业务系统之间的登录和跳转,涉及两个模块,接口少,流程简单。同时,本发明可支持无CA认证和有CA认证两种模式,适用范围广泛;而且通过CA认证可进一步提高其系统的安全性,安全性高,支持扩展第三方认证平台。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神和基本特征的情况下,能够以其他的具体形式实现本发明。此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (10)
1.一种基于用户同步实现多系统单点登录的方法,其特征在于,所述方法包括:
步骤S1、单点登录HTTP服务器获取登录请求,并对登录请求进行认证;若验证失败,则返回错误信息至客户端,流程结束;若验证成功,则记录当前登录的用户,并根据当前用户生成一个唯一的通行证TICKET,同时将当前用户信息和通行证TICKET发送至业务系统;
步骤S2、业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S3、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
步骤S4、业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功;若需跳转至与当前业务系统相关且彼此独立的其它业务系统,则业务系统根据需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器;若需结束操作,直接退出即可,流程结束;其中,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
步骤S5、单点登录HTTP服务器对接收到的当前登录用户信息和通行证TICKET的有效性进行校验,若校验不通过,则直接返回错误信息至客户端,流程结束;若校验通过,则将用户信息和通行证TICKET发送至目标业务系统;
步骤S6、目标业务系统接收用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
步骤S7、单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至目标业务系统;
步骤S8、目标业务系统接收验证成功信息,将返回的用户信息和TICKET存储到会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
2.根据权利要求1所述的一种基于用户同步实现多系统单点登录的方法,其特征在于,所述步骤S1中单点登录HTTP服务器获取登录请求有两种,一种是包括用户名和密码的用户信息,另一种是包括CA认证、用户名和密码的信息;包括用户名和密码的用户信息由用户直接打开业务系统登录界面输入,再由业务系统将输入的用户名和密码发送至单点登录HTTP服务器进行认证;包括CA认证信息、用户名和密码的信息由用户插入CA KEY,并打开业务系统登录界面输入的用户名和密码,单点登录HTTP服务器对业务系统发送的密码信息和读取CA KEY的信息进行认证。
3.根据权利要求1所述的一种基于用户同步实现多系统单点登录的方法,其特征在于,若业务系统需要进行CA认证,则在所述步骤S5之前先进行CA认证,若认证通过,则执行步骤S5;若认证不通过,则直接返回错误信息至客户端。
4.根据权利要求1所述的一种基于用户同步实现多系统单点登录的方法,其特征在于,所述步骤S5具体包括:
步骤S5-1、通行证TICKET有效性验证:单点登录HTTP服务器对接收到的通行证TICKET有效性进行校验,若无效,则直接返回错误信息至客户端,流程结束;若有效,则跳至步骤S5-2;
步骤S5-2、权限验证:校验当前用户是否有目标业务系统的访问权限,若没有权限,则返回错误信息至客户端,流程结束;若有权限,则将通行证TICKET发送至目标业务系统。
5.根据权利要求1所述的一种基于用户同步实现多系统单点登录的方法,其特征在于,若目标业务系统需要进行CA认证,则在所述步骤S7之前先进行CA认证,验证客户端的CA与用户信息记录的CA是否一致,若一致,则认证通过,跳转至步骤S7;若不一致,则认证不通过,直接返回错误信息至客户端。
6.根据权利要求1所述的一种基于用户同步实现多系统单点登录的方法,其特征在于,所述通行证TICKET由java.util.UUID生成一个随机字符串,用户登录验证通过后,将生成的通行证TICKET与用户信息UserInfo以KEY-VALUE的方式存入Redis数据库,UserInfo里有当前用户可访问的业务系统列表。
7.一种基于用户同步实现多系统单点登录的系统,包括多个相关且彼此独立的业务系统,其特征在于,还包括:
单点登录HTTP服务器,一方面用于处理各业务系统提供的登录验证,并针对不同用户生成唯一的通行证TICKET;另一方面用于各业务系统间跳转时提供跳转的URL、用户验证以及通行证TICKET验证;
单点登录验证服务器,用于验证各业务系统提交的通行证TICKET的有效性;
各业务系统与单点登录HTTP服务器、单点登录验证服务器连接。
8.根据权利要求7所述的一种基于用户同步实现多系统单点登录的系统,其特征在于,所述业务系统登录包括:
业务系统将登录请求发送至单点登录HTTP服务器;
单点登录HTTP服务器对登录请求内的用户信息、是否有访问业务系统的权限进行验证;若验证不通过,则返回错误信息至客户端,流程结束;若验证通过,则记录本次登录的信息,并针对当前用户生成一个唯一的通行证TICKET,将当前用户信息和通行证TICKET发送至业务系统;
业务系统接收当前用户信息和通行证TICKET,并将相关信息发送至单点登录验证服务器;
单点登录验证服务器对接收到通行证TICKET的有效性进行验证,若无效,则返回错误信息至客户端;若有效,则返回验证成功的信息至业务系统;
业务系统接收验证成功信息,将用户信息和TICKET存储到用户的会话中,以便单点登录至其他业务系统时用,并返回至主界面,提示用户登录成功。
9.根据权利要求7所述的一种基于用户同步实现多系统单点登录的系统,其特征在于,所述业务系统间的跳转包括:
用户成功登录一业务系统;
业务系统根据跳转需求生成跳转请求,并将跳转请求发送至单点登录HTTP服务器,跳转请求包括当前业务系统代码、当前登录用户信息、目标业务系统代码和通行证TICKET;
单点登录HTTP服务器对接收的通行证TICKET进行校验是否有效,并校验当前用户是否有目标业务系统的访问权限,如果校验不通过,则返回错误信息;如果校验通过,则将通行证TICKET发往目标业务系统;
目标业务系统收到通行证之后,通过单点登录验证服务器校验该通行证TICKET的有效性,若通行证有效,则提示用户登录成功;若无效,则返回错误信息至客户端。
10.根据权利要求9所述的一种基于用户同步实现多系统单点登录的系统,其特征在于,当目标业务系统需要进行CA认证时,单点登录服务器在校验通行证TICKET之前先进行CA校验,若读取的客户端CA与用户信息记录的CA一致,则继续校验通行证TICKET;若不一致,则返回报错。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995153.XA CN112153041A (zh) | 2020-09-21 | 2020-09-21 | 一种基于用户同步实现多系统单点登录的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995153.XA CN112153041A (zh) | 2020-09-21 | 2020-09-21 | 一种基于用户同步实现多系统单点登录的方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112153041A true CN112153041A (zh) | 2020-12-29 |
Family
ID=73894127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010995153.XA Pending CN112153041A (zh) | 2020-09-21 | 2020-09-21 | 一种基于用户同步实现多系统单点登录的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112153041A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112929391A (zh) * | 2021-03-15 | 2021-06-08 | 浪潮云信息技术股份公司 | 一种基于单点登录实现跨平台身份认证的方法 |
CN113420282A (zh) * | 2021-06-12 | 2021-09-21 | 济南浪潮数据技术有限公司 | 一种跨站点的单点登录方法和装置 |
CN114006751A (zh) * | 2021-10-29 | 2022-02-01 | 广东宜教通教育有限公司 | 一种使用临时认证码的校园系统单点登录方法 |
CN114218552A (zh) * | 2021-11-16 | 2022-03-22 | 成都智鑫易利科技有限公司 | 一种采用服务总线实现超大用户量统一身份认证方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102469075A (zh) * | 2010-11-09 | 2012-05-23 | 中科正阳信息安全技术有限公司 | 一种基于web单点登录的集成认证方法 |
CN102571822A (zh) * | 2012-02-27 | 2012-07-11 | 杭州闪亮科技有限公司 | 单点登录系统及其实现方法 |
CN102739658A (zh) * | 2012-06-16 | 2012-10-17 | 华南师范大学 | 一种单点登录的离线验证方法 |
CN111614672A (zh) * | 2017-05-26 | 2020-09-01 | 朱海燕 | Cas的基本验证方法及基于cas的权限认证装置 |
-
2020
- 2020-09-21 CN CN202010995153.XA patent/CN112153041A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102469075A (zh) * | 2010-11-09 | 2012-05-23 | 中科正阳信息安全技术有限公司 | 一种基于web单点登录的集成认证方法 |
CN102571822A (zh) * | 2012-02-27 | 2012-07-11 | 杭州闪亮科技有限公司 | 单点登录系统及其实现方法 |
CN102739658A (zh) * | 2012-06-16 | 2012-10-17 | 华南师范大学 | 一种单点登录的离线验证方法 |
CN111614672A (zh) * | 2017-05-26 | 2020-09-01 | 朱海燕 | Cas的基本验证方法及基于cas的权限认证装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112929391A (zh) * | 2021-03-15 | 2021-06-08 | 浪潮云信息技术股份公司 | 一种基于单点登录实现跨平台身份认证的方法 |
CN113420282A (zh) * | 2021-06-12 | 2021-09-21 | 济南浪潮数据技术有限公司 | 一种跨站点的单点登录方法和装置 |
CN114006751A (zh) * | 2021-10-29 | 2022-02-01 | 广东宜教通教育有限公司 | 一种使用临时认证码的校园系统单点登录方法 |
CN114218552A (zh) * | 2021-11-16 | 2022-03-22 | 成都智鑫易利科技有限公司 | 一种采用服务总线实现超大用户量统一身份认证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109309683B (zh) | 基于token的客户端身份验证的方法及系统 | |
CN112153041A (zh) | 一种基于用户同步实现多系统单点登录的方法及其系统 | |
TWI706263B (zh) | 信任登錄方法、伺服器及系統 | |
US7698734B2 (en) | Single sign-on (SSO) for non-SSO-compliant applications | |
CN108600203A (zh) | 基于Cookie的安全单点登录方法及其统一认证服务系统 | |
JP4880699B2 (ja) | サービスアカウントを保護するための方法、システム、及び装置 | |
US6993596B2 (en) | System and method for user enrollment in an e-community | |
US9021570B2 (en) | System, control method therefor, service providing apparatus, relay apparatus and computer-readable medium | |
CN112468481B (zh) | 一种基于CAS的单页和多页web应用身份集成认证方法 | |
US20160381001A1 (en) | Method and apparatus for identity authentication between systems | |
KR20040037029A (ko) | 디지털 콘텐츠 및 스트리밍 미디어에 대한 액세스 제어 방법 | |
CN101426009A (zh) | 身份管理平台、业务服务器、统一登录系统及方法 | |
KR20110003353A (ko) | 만료된 패스워드 처리 | |
CN112491881A (zh) | 跨平台单点登录方法、系统、电子设备及存储介质 | |
CN109495486B (zh) | 一种基于JWT的单页Web应用集成CAS的方法 | |
CN111431920A (zh) | 一种基于动态令牌的安全控制方法及系统 | |
CN111818088A (zh) | 授权模式管理方法、装置、计算机设备及可读存储介质 | |
CN111062023A (zh) | 多应用系统实现单点登录的方法及装置 | |
JP2008242926A (ja) | 認証システム、認証方法および認証プログラム | |
CN112434054A (zh) | 一种审计日志的更新方法及装置 | |
CN112491890A (zh) | 一种访问方法及装置 | |
CN111541650A (zh) | 一种多站点单点登录实现方法 | |
US9009799B2 (en) | Secure access | |
CN112685718A (zh) | 基于OAuth协议在同账号多端登录时使原访问令牌失效的方法 | |
CN110740122B (zh) | 一种提高数据仓库安全性的方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201229 |