单点登录方法、装置、设备及介质与流程

文档序号:26533980发布日期:2021-09-04 15:03阅读:167来源:国知局
单点登录方法、装置、设备及介质与流程

1.本申请涉及互联网技术领域,特别涉及一种单点登录方法、装置、设备及介质。


背景技术:

2.单点登录指用户登录一组应用程序里的一个应用程序之后,在访问改组其它应用程序时,不需要再次进行登录操作。
3.相关技术采用应用系统前后端不分离的方案,当用户通过网页浏览器登录应用程序时,由应用系统访问身份提供方,要求身份提供方提供身份验证服务,身份提供方和网页浏览器进行交互,获取存储在网页浏览器内的历史用户信息,身份提供方根据历史用户信息进行身份验证,当身份验证通过时,完成登录操作。
4.在使用前后端不分离的方案时,对应用系统的维护成本高,应用系统的开发效率低下,且用户的身份信息容易被拦截,造成身份信息的泄漏。


技术实现要素:

5.本申请实施例提供了一种单点登录方法、装置及介质,可以解决相关技术中应用系统采用前后端不分离的方案时,身份信息易泄漏,维护成本高的问题。所述技术方案如下:
6.根据本申请的一个方面,提供了一种单点登录方法,应用于终端中,所述终端的网页浏览器中运行有第一应用系统的前端程序,所述方法包括:
7.响应于在所述网页浏览器上与第一租户对应的登录操作,所述网页浏览器通过所述前端程序向服务器发送登录请求;
8.所述前端程序接收一次性编码,所述一次性编码是后端程序在所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时发送的,所述后端程序是所述第一应用系统在所述服务器中运行的程序;
9.所述前端程序根据所述一次性编码,从所述后端程序获得登录令牌;
10.所述前端程序根据所述登录令牌,完成登录操作。
11.根据本申请的另一个方面,提供了一种单点登录方法,应用于服务器中,所述服务器中运行有第一应用系统的后端程序,所述方法包括:
12.接收所述第一应用系统的前端程序发送的登录请求,所述前端程序运行于终端的网页浏览器中,所述登录请求是所述前端程序响应于与第一租户对应的登录请求发送的;
13.所述后端程序在所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时,向所述前端程序发送一次性编码;
14.所述后端程序根据所述一次性编码,向所述前端程序发送登录令牌,完成登录操作。
15.根据本申请的另一方面,提供了一种单点登录装置,所述装置包括终端,所述终端的网页浏览器中运行有第一应用系统的前端程序,所述装置包括:
16.发送模块,用于响应于在所述网页浏览器上与第一租户对应的登录操作,所述网页浏览器通过所述前端程序向服务器发送登录请求;
17.接收模块,用于所述前端程序接收一次性编码,所述一次性编码是后端程序在所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时发送的,所述后端程序是所述第一应用系统在所述服务器中运行的程序;
18.所述接收模块,还用于所述前端程序根据所述一次性编码,从所述后端程序获得登录令牌。
19.登录模块,用于所述前端程序根据所述登录令牌,完成登录操作。
20.可选地,所述接收模块,还用于所述前端程序接收所述一次性编码,所述一次性编码是所述后端程序在验证第一用户账号的身份信息成功时发送的,所述一次性编码是通过所述网页浏览器的重定向功能转发的,所述第一用户账号属于所述第一租户;其中,所述第一用户账号的身份信息是所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时,由所述身份提供方服务器发送给所述后端程序的。
21.可选地,所述装置中所述第一用户账号的身份信息是由所述单点登录框架发送给所述后端程序;所述第一用户账号的身份信息是在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时,由所述身份提供方服务器发送给所述单点登录框架。
22.可选地,所述发送模块,还用于响应于响应于在所述网页浏览器上与所述第一租户对应的登录操作,所述网页浏览器通过所述前端程序向所述单点登录框架发送所述登录请求;所述单点登录框架通过所述网页浏览器的重定向功能,向所述身份提供方服务器转发所述登录请求。
23.可选地,所述发送模块,还用于响应于在所述网页浏览器上与所述第一租户中的第一用户账户对应的注销操作,所述前端程序向所述后端程序发送注销请求。
24.可选地,所述接收模块,还用于所述前端程序接收注销完成指令,所述注销完成指令是所述身份提供方服务器在销毁全局会话时发送的,所述注销完成指令是通过所述网页浏览器的重定向功能转发的。
25.可选地,所述装置还包括:注销模块。
26.所述注销模块,用于所述前端程序向所述后端程序转发所述注销完成指令,完成注销操作。
27.根据本申请的另一方面,提供了一种单点登录装置,所述装置包括服务器,所述服务器中运行有第一应用系统的后端程序,所述装置包括:
28.接收模块,用于接收所述网页浏览器发送的登录请求,所述网页浏览器中运行有所述第一应用系统的前端系统,所述登录请求是所述网页浏览器通过所述前端程序发送的;
29.发送模块,用于所述后端程序在验证第一用户账号的身份信息成功时,向所述前端程序发送一次性编码;
30.所述发送模块,还用于所述后端程序根据所述一次性编码,向所述前端程序发送登录令牌,完成登录操作。
31.可选地,所述接收模块,还用于所述后端程序接收第一用户账号的身份信息,所述第一用户账号的身份信息是所述网页浏览器和身份提供方服务器之间存在可信任的未失
效会话时由所述身份提供方服务器发送的。
32.可选地,所述发送模块,还用于所述后端程序在验证所述第一用户账号的身份信息成功时,向所述前端程序发送所述一次性编码,所述一次性编码是通过所述网页浏览器的重定向功能进行转发的,所述第一用户账号属于所述第一租户,所述前端程序和所述后端程序运行于同一域名的不同路径下。
33.可选地,所述接收模块,还用于所述单点登录框架接收所述第一用户账号的身份信息;所述第一用户账号的身份信息是在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时由所述身份提供方服务器发送的。
34.可选地,所述接收模块,还用于所述后端程序接收所述单点登录框架转发的所述第一用户账号的身份信息。
35.可选地,所述接收模块,还用于所述单点登录框架获得所述身份提供方服务器的地址配置信息。
36.可选地,所述发送模块,还用于所述单点登录框架根据所述地址配置信息,向所述身份提供方服务器发送身份认证请求,所述身份认证请求是通过所述网页浏览器的重定向功能转发的。
37.可选地,所述接收模块,还用于所述单点登录框架获得身份认证反馈,所述身份认证反馈是所述身份提供方服务器在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时发送的,所述身份认证反馈是通过所述网页浏览器的重定向功能转发的;所述单点登录框架根据所述身份认证反馈,获得所述第一用户账户的身份信息。
38.可选地,所述接收模块,还用于所述后端程序接收所述前端程序的注销请求,所述注销请求是所述前端程序响应于所述第一租户中的第一用户账户对应的注销操作发送的。
39.可选地,所述装置还包括:
40.注销模块,用于所述后端程序根据所述注销请求,销毁所述登录令牌;
41.可选地,所述发送模块,还用于所述后端程序向所述身份提供方服务器发送全局注销请求。
42.可选地,所述注销模块,还用于所述后端程序接收所述前端程序转发的注销完成指令,完成注销操作。
43.可选地,所述发送模块,还用于所述后端程序向所述单点登录框架发送局部注销完成指令,所述局部注销完成指令是通过所述网页浏览器的重定向功能转发的。
44.可选地,所述发送模块,还用于所述单点登录框架获得所述局部注销完成指令后,所述单点登录框架向所述身份提供方服务器发送所述全局注销请求,所述全局注销请求是通过所述网页浏览器的重定向功能转发的。
45.根据本申请的另一方面,提供了一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的单点登录方法。
46.根据本申请的另一方面,提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条程序代码,程序代码由处理器加载并执行以实现如上方面所述单点登录方法。
47.根据本申请的另一方面,提供了一种计算机程序产品或计算机程序,上述计算机程序产品或计算机程序包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上方面所述的单点登录方法。
48.本申请实施例提供的技术方案带来的有益效果至少包括:
49.在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端编程序用该一次性编码向后端程序换取登录令牌,可以提高登录的安全性,防止他人恶意登录。
附图说明
50.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
51.图1示出了本申请一个示例性实施例提供的计算机系统的框图;
52.图2示出了本申请一个示例性实施例提供的单点登录方法的流程图;
53.图3示出了本申请一个示例性实施例提供的单点登录方法的流程图;
54.图4示出了本申请一个示例性实施例提供的单点登录方法的流程图;
55.图5示出了本申请一个示例性实施例提供的单点注销方法的流程图;
56.图6示出了本申请一个示例性实施例提供的实现单点登录的产品的框图;
57.图7示出了本申请一个示例性实施例提供的单点登录装置的框图;
58.图8示出了本申请一个示例性实施例提供的单点登录装置的框图;
59.图9示出了本申请一个示例性实施例提供的服务器的结构示意图。
具体实施方式
60.为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
61.在本实施例中,所涉及的“长”、“宽”、“上”、“下”均以附图中所示的长、宽、上、下为基准。
62.首先,对本申请实施例中涉及的名词进行介绍:
63.单点登录(single sign on,sso):一种安全的统一身份认证机制,能够使用户登录一组应用程序里的一个应用程序之后,在访问其它应用程序时,不需要再次进行登录操作。例如,a公司名下有两款应用程序x和y,当用户b已经在应用程序x上执行过登录操作后,用户b不需要在应用程序y上执行登录操作。
64.单点注销:与单点登录相对应,能够使用户注销一组应用程序里的一个应用程序之后,在注销其它应用程序时,不需要再次进行注销操作。
65.身份提供方(identity provider,idp):用于维护和管理身份信息,同时向联合或分布式网络中的依赖应用程序提供身份验证服务。
66.服务提供方(service provider,sp):在应用程序上为用户提供咨询,法律,房地产,通信,存储,处理等服务。
67.令牌(token):用于减轻服务器的压力而使用的一串字符串。令牌由服务器产生,在客户端进行第一次登录时,服务器产生一个令牌,并发送给客户端,在下次登录时,客户端只需向服务器发送令牌即可,无需带上用户账户和密码。
68.会话(session):代表服务器和浏览器的一次通讯过程,这个过程可以是连续的,也可以是时断时续的。在会话的存在期间,用户会向服务器发送多次请求,这些请求就会被存储于会话中。会话存储于服务器的会话存储库中。
69.租户(tenant):表示使用同一数据库的组织。一般用于商业领域,用于表示组织、企业和团体等。示例性的,假设有一应用系统a,公司b使用应用系统a的服务,则公司b属于应用系统a的一个租户,公司b内有多个员工,公司b为每个员工都分配了相对应的用户账号,故租户内有多个用户账号。
70.重定向(redirect):通过各种方法将网络请求重新定向到其他位置。重定向和转发不同:重定向是网页浏览器向服务器发送请求并收到响应后,再次向一个单点登录框架或后端程序发出请求。
71.图1示出了本申请一个示例性实施例提供的计算机系统的框图,计算机系统100包括:终端101、服务器网络102和身份提供方服务器103。服务器网络102包括:网站服务器104、应用系统服务器105、配置服务器106和分布式缓存服务器107。
72.终端101上运行有网页浏览器或具有网页浏览功能的应用程序。终端101由第一租户使用,其中,第一租户是企业、个人、组织或团体中的任意一种。在终端101的网页浏览器上,第一用户使用第一租户中的第一用户账号访问第一应用系统。终端101以有线或无线的方式与网络连接。可选地,终端101为台式计算机、智能手机、平板电脑、电子书阅读器、mp3播放器、mp4播放器和膝上型便携计算机中的至少一种。本领域技术人员可以知晓,移动终端101的数量可以更多或更少。比如终端101可以仅为一个,或者终端101为几十个或几百个,或者更多数量。本申请实施例对终端101的数量不加以限定。
73.网站服务器(wed服务器)104用于提供网络信息浏览服务,可以处理网页浏览器的请求并返回相应的响应。网站服务器104以有线或无线的方式与网络连接。
74.应用系统(application portal,app)服务器105用于向终端的应用程序提供相应的服务。应用系统服务器105以有线或无线的方式与网络连接。应用系统服务器105可以向一种或多种应用系统提供服务。
75.配置服务器106用于存放身份提供方服务器105的配置信息。配置信息中包括身份提供方服务器105的名称、域名和地址中的至少一种。示例性的,在配置服务器中存放身份提供方服务器的域名为www.xxxxxx.com。
76.缓存服务器107用于存放频繁访问内容的服务器。示例性的,在缓存服务器107中存放用户的身份信息,示例性的,用户信息包括用户的姓名、手机号码、座机号码、邮箱、身份证号码、住址、工作单位和工作部门中的至少一种。缓存服务器107可以是分布式缓存服务器,也可以是非分布式缓存服务器,本申请对缓存服务器107的种类不做限定。示例性的,还可以在缓存服务器107内存放会话存储库。
77.身份提供方服务器103用于维护和管理身份信息,同时向应用程序提供身份验证
服务。身份提供方服务器103以有线或无线的方式与网络连接在身份提供方服务器103中存放有用户信息,示例性的,用户信息包括用户的姓名、手机号码、座机号码、邮箱、身份证号码、住址、工作单位和工作部门中的至少一种。可选地,在身份提供方服务器103内存放会话消息,该会话为身份提供方服务器103和网页浏览器之间的会话,该会话可以是实时会话,也可以是未失效会话。
78.图2示出了本申请一个示例性实施例提供的单点登录方法的流程图,该方法应用于图1所示的终端101中,该方法包括以下步骤:
79.步骤201,响应于在网页浏览器上与第一租户对应的登录操作,网页浏览器通过前端程序向服务器发送登录请求。
80.第一租户指使用第一应用系统的组织或个人。其中,第一租户可以更多或更少,例如,第一租户为数十个或数百个,甚至更多,本申请对第一租户的数量不做限制。
81.第一应用系统为前后端分离的应用系统,前后端分离指应用系统的后端程序运行在一个进程上,后端程序用于处理应用系统的业务逻辑,而应用系统的前端程序运行在另一个进程上,前端程序用于开发前端的页面显示,比如,使用js(javascript,一种计算机编程语言)为pc(personal computer,个人计算机)端开发页面,使用html5(hyper text markup language 5,一种计算机语言的描述规范)为移动端开发页面。示例性的,后端程序运行在java(一种计算机编程语言)进程上,前端程序运行在nginx(一种网站服务器,可以提供网络服务)等网页服务的进程上,前端程序和后端程序协同工作,实现应用系统的全部或部分功能。
82.登录操作指第一租户中的第一用户通过网页浏览器访问第一应用系统,示例性的,第一租户通过http://host/site/t1访问第一应用系统,其中,t1代表第一租户。第一用户与第一用户账号相对应。
83.可选地,在执行登录操作时,第一租户中的第一用户可以输入第一用户账号,也可以不输入第一用户账号。示例性的,第一用户在网页页面上不输入第一用户账号,直接点击“登录”的控件,或者,第一用户在输入第一用户账号后,点击“登录”的控件。
84.可选地,登录操作还可以是第一租户中的第一用户在网页浏览器上点击控件、双击控件、长按控件、拖动控件、敲击控件、摇晃终端、旋转终端和翻转终端中的至少一种。
85.步骤202,前端程序接收一次性编码,一次性编码是后端程序在网页浏览器和身份提供方服务器之间存在可信任的未失效会话时发送的,后端程序是第一应用系统在服务器中运行的程序。
86.一次性编码指(所有时间段或指定时间段内)只能被使用一次的字符或字符串。一次性编码可以是随机生成,也可以是按照预设的规则生成。一次性编码在使用一次后就会失效。示例性的,一次性编码为n45sjdf,在使用一次性编码n45sjdf进行验证后,一次性编码n45sjdf失去效果,再次使用一次性编码n45sjdf后,无法再次使用一次性编码n45sjdf进行验证。
87.可信任的未失效会话指在某一历史时刻,可信任的网页浏览器和身份提供方服务器之间的未失效的会话。可信任的网页浏览器指已经通过身份信息输入的网页浏览器,身份认证指第一租户使用当前浏览器输入的身份信息与身份提供方服务器中存储的身份信息进行匹配的过程。当身份提供方服务器中存在与第一租户输入的身份信息相匹配的身份
信息时,当前网页浏览器的身份认证成功,此处的身份信息包括姓名、手机号码、座机号码、邮箱、身份证号码、住址、工作单位和工作部门中的至少一种。当身份提供方服务器中不存在与第一租户输入的身份信息相匹配的身份信息时,当前网页浏览器的身份认证失败,也即当前网页浏览器不是可信任的浏览器。示例性的,第一租户使用网页浏览器a进行身份认证,第一租户输入的身份信息与身份提供方服务器中存储的身份信息相匹配,则网页浏览器a通过身份认证,网页浏览器a为可信任的网页浏览器。
88.一次性编码由后端程序生成,并由后端程序发送给前端程序。一次性编码的发送方法可以是后端程序通过网页浏览器的重定向功能,将一次性编码转发给前端程序;也可以是后端程序将一次性编码直接发送给前端程序。一次性编码存在有效时间,在有效时间内,一次性编码有效,前端程序可以使用有效的一次性编码向后端程序交换登录令牌。示例性的,一次性编码的有效时间为一分钟或五分钟。
89.步骤203,前端程序根据一次性编码,从后端程序获得登录令牌。
90.前端程序使用一次性编码向后端程序换取登录令牌。前端程序与后端程序以交互的形式,进行步骤203,即,前端程序向后端程序传递一次性编码,当后端程序获得的一次性编码与步骤202中后端程序发送的一次性编码相同时,后端程序将登录令牌传递给前端程序。
91.登录令牌用于向第一应用系统请求执行登录操作。可选的,登录令牌存在有效时间,在有效时间内,前端程序可以根据登录操作完成登录操作,当超出有效时间时,登录令牌失效,前端程序无法根据登录令牌执行登录操作。示例性的,有效时间为十分钟或三十分钟。可选地,在第一租户处于已登录状态时,会刷新登录令牌的有效时间或者重新设定登录令牌的有效时间,前述的已登录状态指第一租户完成单点登录,且第一租户未退出登录。
92.步骤204,前端程序根据登录令牌,完成登录操作。
93.前端程序将登录令牌发送至第一应用系统的服务器,前述服务器在获得登录令牌,会向终端返回与登录相应的数据。终端在获得前述相应的数据后,完成登录操作。
94.在一个示例中,完成登录操作指网页浏览器显示登陆后的应用系统的页面。
95.综上所述,本实施例在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端程序使用该一次性编码向后端程序换取登录令牌,可以提高登录的安全性,防止他人恶意登录。
96.在上一个实施例中介绍了终端一侧的单点登录方法,接下来,对服务器一侧的单点登录方法进行说明,图3示出了本申请一个示例性实施例提供的单点登录方法的流程图,该方法应用于图1所示的服务器102中,该方法包括以下步骤:
97.步骤301,接收网页浏览器发送的登录请求,网页浏览器中运行有第一应用系统的前端系统,登录请求是网页浏览器通过前端程序发送的。
98.当第一租户在网页浏览器上执行登录操作时,即第一租户通过网页浏览器访问第一应用系统的前端程序,由网页浏览器通过前端程序向后端程序发送登录请求。
99.第一应用系统的前端程序和后端程序相对应,前端程序用于处理终端一侧的页面显示,后端程序用于处理应用系统的业务逻辑。前端程序和后端程序协同工作,实现应用系统的全部或部分功能。
100.步骤302,后端程序在验证第一用户账号的身份信息成功时,向前端程序发送一次性编码。
101.第一应用系统的后端程序中存储有用户账号的身份信息或与身份信息相关的信息,后端程序通过存储的用户账号的身份信息或与身份信息相关的信息来进行验证。示例性的,后端程序中存储了用户账户的唯一标识,该唯一标识与用户账户一一对应。
102.一次性编码由后端程序生成,并由后端程序发送给前端程序。一次性编码存在有效时间,在有效时间内,一次性编码有效,前端程序可以使用有效的一次性编码向后端程序交换登录令牌。
103.步骤303,后端程序根据一次性编码,向前端程序发送登录令牌,完成登录操作。
104.在后端向前端程序发送登录令牌后,前端程序会根据登录令牌完成登录操作,详细过程可见步骤204,此处不再赘述。
105.完成登录操作指网页浏览器显示登陆后的应用系统的页面。
106.综上所述,本实施例在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端程序使用该一次性编码向后端程序换取登录令牌,可以提高登录的安全性,防止他人恶意登录。
107.在上一个实施例中,介绍了服务器一侧的单点登录方法,接下来结合多侧执行主体进行阐述,图4示出了本申请一个示例性实施例提供的单点登录方法的流程图,该方法应用于图1所示的计算机系统100中,其中,第一应用系统的前端程序和后端程序运行于同一域名的不同路径下,服务器102中还运行有单点登录框架,所述方法包括:
108.步骤401,后端程序初始化单点登录框架中的地址配置信息。
109.第一应用系统的后端程序初始化单点登录框架中的身份提供方服务器的地址配置信息。
110.单点登录框架用于实现单点登录,单点登录框架可架设于服务器中。可选地,服务器中可以不架设单点登录框架,则单点登录框架所执行的步骤由第一应用系统的后端程序代替执行。
111.地址配置信息指身份提供方服务器的地址信息或域名信息。
112.步骤401可以在单点登录框架初次架设时执行一次,后续使用过程可以不执行步骤401。可选地,当身份提供方服务器的地址信息或域名信息发生变化时,修改单点登录框架中的地址配置信息。
113.步骤402,网页浏览器发送登录请求。
114.响应于在网页浏览器上与第一租户对应的登录操作,网页浏览器向第一应用系统的前端程序发送登录请求。
115.登录请求包括第一租户的相关信息。
116.示例性的,第一租户在网页浏览器上,通过http://host/site/t1访问第一应用系统的前端程序,其中,t1代表第一租户,登录请求中包括http://host/site/t1,即登录请求中包括第一租户的相关信息。
117.示例性的,当有多个租户时,第一应用程序的入口地址为http://host/idp/{tenante}。
118.可选地,在第一租户执行登录操作时,第一租户中的第一用户可以输入第一用户账号,用来进行身份认证;也可以不输入第一用户账号,将身份认证过程移交至步骤406。示例性的,第一用户在网页页面上不输入第一用户账号,直接点击“登录”的控件,不进行身份认证;或者,第一用户在输入第一用户账号后,点击“登录”的控件,进行身份认证。
119.步骤403,前端程序转发登录请求。
120.第一应用系统的前端程序向单点登录框架转发登录请求。
121.可选地,第一应用系统的前端程序向服务器转发登录请求。
122.步骤404,单点登录框架根据登录请求获得地址配置信息。
123.单点登录框架根据登录请求,获得身份提供方服务器的地址配置信息。配置服务器存储有地址配置信息。
124.身份提供方服务器用于提供身份验证服务,身份提供方服务器与租户存在对应关系,这里的对应关系可以是一一对应,也可以不是一一对应。示例性的,租户a对应身份提供方服务器a,租户b对应身份提供方服务器b;或者租户a对应身份提供方服务器a,租户b也对应身份提供方服务器a;或者租户a对应身份提供方服务器a和身份提供方服务器b。
125.且身份提供方服务器与租户存在对应关系,故身份提供方服务器的地址配置信息与租户也存在对应关系,所以,单点登录框架根据登录请求中的租户信息获得地址配置信息。示例性的,在第一应用系统转发登录请求后,单点登录框架接收到的登录请求中包括http://host/app

portal/idp/t1,其中,t1代表第一租户,单点登录框架根据t1获取第一租户所对应的地址配置信息。
126.步骤405,单点登录框架发送身份认证请求。
127.单点登录框架根据地址配置信息,向身份提供方服务器发送身份认证请求,身份认证请求是通过网页浏览器的重定向功能转发的。
128.地址配置信息包括身份提供方服务器的地址或域名。故单点登录框架可以根据地址配置信息向单点登录框架发送请求。
129.网页浏览器的重定向功能用于在第一应用系统不能进行身份认证时,将身份认证的工作转移到身份提供方服务器上;其次,通过网页浏览器的重定向功能进行转发是为了在网页浏览器和身份提供方服务器之间建立会话,通过利用网页浏览器和身份提供方服务器之间的会话来实现单点登录。
130.步骤406,网页浏览器和身份提供方服务器进行身份认证。
131.当网页浏览器和身份提供方服务器之间不存在可信任的未失效会话时,进行身份认证;
132.当网页浏览器和身份提供方服务器之间存在可信任的未失效会话时,执行步骤407。
133.身份提供方服务器查询网页浏览器和身份提供方服务器的未失效会话来进行身份认证。
134.可信任的未失效会话指在某一历史时刻,可信任的网页浏览器和身份提供方服务器之间的会话。可信任的网页浏览器指已经通过身份认证的网页浏览器。
135.身份认证指第一租户使用当前浏览器输入的身份信息与身份提供方服务器中存储的身份信息进行匹配的过程。当身份提供方服务器中存在与第一租户输入的身份信息相
匹配的身份信息时,当前网页浏览器的身份认证成功,此处的身份信息包括姓名、手机号码、座机号码、邮箱、身份证号码、住址、工作单位和工作部门中的至少一种。当身份提供方服务器中不存在与第一租户输入的身份信息相匹配的身份信息时,当前网页浏览器的身份认证失败,也即当前网页浏览器不是可信任的浏览器。示例性的,第一租户使用网页浏览器a进行身份认证,第一租户输入的身份信息与身份提供方服务器中存储的身份信息相匹配,则网页浏览器a通过身份认证,网页浏览器a为可信任的网页浏览器。
136.步骤407,身份提供方服务器发送身份认证反馈。
137.身份提供方服务器向单点登录框架发送身份认证反馈,身份认证反馈是通过网页浏览器的重定向功能转发的。单点登录框架获得身份认证反馈。
138.可选地,单点登录框架根据身份认证反馈,获得第一用户账户的身份信息。
139.当身份认证反馈中包括访问令牌时,执行步骤408;当身份认证反馈中不包括访问令牌时,执行步骤410。
140.可选地,当身份认证反馈中不包括访问令牌时,身份认证反馈包括用户令牌,用户令牌中携带有第一用户账户的身份信息,故在此种情况下,不需要执行步骤408和步骤409。
141.访问令牌用于向身份提供方服务器换取第一用户账户的身份信息,第一用户账户属于第一租户。第一用户账户的身份信息包括姓名、手机号码、座机号码、邮箱、身份证号码、住址、工作单位和工作部门中的至少一种。
142.步骤408,单点登录框架请求用户信息。
143.单点登录框架根据访问令牌,向身份提供方服务器请求第一用户账户的用户信息。
144.步骤409,身份提供方服务器返回用户信息。
145.身份提供方服务器向单点登录框架返回第一用户账户的用户信息。单点登录框架根据访问令牌,从身份提供方服务器获得第一用户账户的身份信息。
146.步骤410,单点登录框架转发用户信息。
147.单点登录框架向第一应用系统的后端程序转发第一用户账户的用户信息。第一应用系统的后端程序接收单点登录框架转发的第一用户账号的身份信息。
148.可选地,当后端程序需要实现多副本备份时,多组后端程序共用一套会话存储库,防止在切换节点时,与身份提供方服务器的会话不能同步。
149.步骤411,后端程序验证用户信息。
150.第一应用系统的后端程序接收第一用户账号的身份信息,并验证第一用户账户的用户信息。
151.第一应用系统的后端程序中存储有用户账号的身份信息或与身份信息相关的信息,后端程序通过存储的用户账号的身份信息或与身份信息相关的信息来进行验证。示例性的,后端程序中存储了用户账户的唯一标识,该唯一标识与用户账户一一对应。
152.可选地,当验证第一用户账户的用户信息失败时,可以临时新建用户账户。
153.步骤412,后端程序发送一次性编号。
154.第一应用系统的后端程序在验证第一用户账号的身份信息成功时,第一应用系统的后端程序向第一应用系统的前端程序发送一次性编号,一次性编码是通过网页浏览器的重定向功能转发的。第一应用系统的前端程序接收一次性编码。
155.步骤413,前端程序使用一次性编号换取登录令牌。
156.第一应用系统的前端程序使用一次性编号向第一应用系统的后端程序换取登录令牌。
157.一次性编码由后端程序生成,并由后端程序发送给前端程序。一次性编码的发送方法可以是后端程序通过网页浏览器的重定向功能,将一次性编码转发给前端程序;也可以是后端程序将一次性编码直接发送给前端程序。一次性编码存在有效时间,在有效时间内,一次性编码有效,前端程序可以使用有效的一次性编码向后端程序交换登录令牌。示例性的,一次性编码的有效时间为一分钟或五分钟。
158.步骤414,完成单点登录。
159.终端完成单点登录。
160.示例性的,在第一租户登录第二应用系统时,会按照上述步骤402至步骤414的顺序进行。其中,第二应用系统和第一应用系统为同一组应用系统,同一组应用系统内的应用系统,可以实现单点登录。
161.可选地,在第一租户成功单点登陆第一应用系统时,会更新后端程序中的用户账户信息。
162.另一方面,给出单点登录框架的rest(representational state transfe,一种软件架构风格)接口:
163.多租户idp(internet datagram protocol,数据报协议)路由:/idp/{idp},用在访问入口;
164.oauth2(一种互联网标准协议)授权端点:/sso/oauth2/authorization

用来接收oauth2请求;
165.oauth2回调端点:/sso/login/oauth2/code,用来接收oauth2代码;
166.saml(security assertion markup language,一种用于安全性断言的标记预压)登录端点:/sso/saml/login,用来接收saml授权请求;
167.saml登出端点:/sso/saml/logout,用来接收saml登出请求;
168.saml元数据端点:/sso/saml/metadata,用来展示saml具体信息。
169.另一方面,给出单点登录框架的api(application programming interface,应用程序接口)接口:
170.oauth2配置载入:ienssooauth2clientpropertiesloader.load(),用于载入oauth2的配置;
171.saml配置载入:ienssosamlclientpropertiesloader.load(),用于载入saml的配置;
172.单点登录框架落地处理:ienssolandinghandler.handle(request,response,,authentication),单点登录框架通过这个接口将用户身份信息传递给应用程序。
173.综上所述,本实施例在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端编码使用该一次性编码向后端换取登录令牌,可以提高登录的安全性,防止他人恶意登录。将第一应用系统的后端程序执行的操作转移至单点登录框架上,利用了单点登录框架的可迁移性,使得本实施例
的方法可以重复使用。
174.图5示出了本申请一个示例性实施例提供的单点注销方法的流程图,该方法应用于图1所示的计算机系统100中,服务器102中还运行有单点登录框架,所述方法包括:
175.步骤501,后端程序初始化身份提供方服务器的地址配置信息。
176.第一应用系统的后端程序初始化单点登录框架中的身份提供方服务器的地址配置信息。
177.单点登录框架用于实现单点登录,单点登录框架可架设与任意服务器中。可选地,服务器中可以不架设单点登录框架,单点登录框架所执行的步骤由第一应用系统的后端程序代替执行。
178.地址配置信息指身份提供方服务器的地址信息或域名信息。
179.步骤502,前端程序发送注销请求。
180.响应于在网页浏览器上与第一租户中的第一用户账户对应的注销操作,第一应用系统的前端程序向第一应用系统的后端程序发送注销请求。
181.注销请求包括租户的相关信息。
182.示例性的,第一租户在网页浏览器上,通过http://host/site/t1注销第一应用系统,其中,t1代表第一租户,登录请求中包括http://host/site/t1。
183.步骤503,后端程序接收注销请求。
184.第一应用系统的后端程序接收注销请求,注销请求是前端程序响应于第一租户中的第一用户账户对应的注销操作发送的。
185.步骤504,后端程序销毁登录令牌。
186.第一应用系统的后端程序根据注销请求,销毁登录令牌。
187.第一应用系统的后端程序在获得注销请求后,会直接销毁登录令牌。在销毁登录令牌后,已经对第一应用系统的后端程序完成注销操作。
188.步骤505,后端程序发送局部注销完成指令。
189.第一应用系统的后端程序向单点登录框架发送局部注销完成指令,局部注销完成指令是通过网页浏览器的重定向功能转发的。
190.局部注销完成指令用于表示第一应用系统的后端程序已经完成注销操作。
191.网页浏览器的重定向功能用于在第一应用系统不能进行身份认证时,将身份认证的工作转移到身份提供方服务器上;其次,通过网页浏览器的重定向功能进行转发是为了在网页浏览器和身份提供方服务器之间建立会话,通过利用网页浏览器和身份提供方服务器之间的会话来实现单点登录。
192.步骤506,单点登录框架接收局部注销完成指令。
193.单点登录框架接收局部注销完成指令。
194.步骤507,单点登录框架根据地址配置信息发送全局注销请求。
195.单点登录框架根据地址配置信息向身份提供方服务器发送全局注销请求,全局注销请求是通过网页浏览器的重定向功能转发的。
196.身份提供方服务器与租户存在对应关系,故身份提供方服务器的地址配置信息与租户也存在对应关系,所以,单点登录框架根据登录请求中的租户信息获得地址配置信息。示例性的,在第一应用系统转发登录请求后,单点登录框架接收到的登录请求中包括
http://host/app

portal/idp/t1,其中,t1代表第一租户,单点登录框架根据t1获取第一租户所对应的地址配置信息。
197.步骤508,单点登录框架接收全局注销请求。
198.单点登录框架接收全局注销请求。
199.步骤509,单点登录框架销毁全局会话。
200.单点登录框架销毁全局会话。
201.在身份提供方服务器中存储有全局会话,全局会话指单点登录框架与一组应用系统的会话,上述的一组应用系统可以实现单点登录操作。
202.步骤510,单点登录框架发送注销完成指令。
203.单点登录框架向第一应用系统的前端程序发送注销完成指令,注销完成指令是通过网页浏览器的重定向功能转发的。
204.注销完成指令用于表示身份提供方服务器已经完成全局会话的销毁。
205.步骤511,转发注销完成指令。
206.第一应用系统的前端程序向第一应用系统的后端程序转发注销毁完成指令。
207.本步骤为可选步骤。
208.在步骤510,即可认为单点注销操作已经完成。
209.综上所述,本实施例在前后端分离的应用系统中实现单点注销,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,将第一应用系统的后端程序执行的操作转移至单点登录框架上,利用了单点登录框架的可迁移性,使得本实施例的方法可以重复使用。
210.图6示出了本申请一个示例性实施例提供的实现单点登录的产品的框图,该框图应用于图1所示的计算机系统100中,该框图包括:应用系统的前端程序601、应用系统的后端程序602、单点登录框架603、配置服务器604、会话存储库605、第一租户606和第二租户607。
211.前后端分离的应用系统分为应用系统的前端程序601和应用系统的后端程序602,该应用系统与第一租户606和/或第二租户607进行单点登录。可选地,进行单点登录的租户可以更多或更少,例如,进行单点登录的租户为数十个或数百个,甚至更多,本申请对租户的数量不做限制。其中,应用系统的前端程序601运行在nginx进程上,应用系统的后端程序602运行在java进程上,应用系统的后端程序602通过“/app

portal”的路径,已反向代理的方式,将需要转发的请求发送到java进程上。
212.在第一租户606和/或第二租户607使用网页浏览器的重定向功能时,与重定向相关的请求或指令会被统一到nginx进程上。
213.在多个应用系统的情况下,多个应用系统会使用同一个会话存储库605。
214.应用系统的后端程序602可以通过配置中心对配置服务器604中的内容进行更新。
215.图7示出了本申请的一个示例性实施例提供的单点登录装置的框图,该装置700包括终端,前述终端的网页浏览器中运行有第一应用系统的前端程序,该装置包括:
216.发送模块701,用于响应于在所述网页浏览器上与第一租户对应的登录操作,所述网页浏览器通过所述前端程序向服务器发送登录请求;
217.接收模块702,用于所述前端程序接收一次性编码,所述一次性编码是后端程序在
所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时发送的,所述后端程序是所述第一应用系统在所述服务器中运行的程序;
218.所述接收模块702,还用于所述前端程序根据所述一次性编码,从所述后端程序获得登录令牌;
219.登录模块703,用于所述前端程序根据所述登录令牌,完成登录操作。
220.可选地,所述接收模块702,还用于所述前端程序接收所述一次性编码,所述一次性编码是所述后端程序在验证第一用户账号的身份信息成功时发送的,所述一次性编码是通过所述网页浏览器的重定向功能转发的,所述第一用户账号属于所述第一租户;其中,所述第一用户账号的身份信息是所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时,由所述身份提供方服务器发送给所述后端程序的。
221.可选地,所述装置700中所述第一用户账号的身份信息是由所述单点登录框架发送给所述后端程序;所述第一用户账号的身份信息是在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时,由所述身份提供方服务器发送给所述单点登录框架。所述前端程序和所述后端程序运行于同一域名的不同路径。
222.可选地,所述发送模块701,还用于响应于在所述网页浏览器上与所述第一租户对应的登录操作,所述网页浏览器通过所述前端程序向所述单点登录框架发送所述登录请求;所述单点登录框架通过所述网页浏览器的重定向功能,向所述身份提供方服务器转发所述登录请求。
223.可选地,所述发送模块701,还用于响应于在所述网页浏览器上与所述第一租户中的第一用户账户对应的注销操作,所述前端程序向所述后端程序发送注销请求。
224.可选地,所述接收模块702,还用于所述前端程序接收注销完成指令,所述注销完成指令是所述身份提供方服务器在销毁全局会话时发送的,所述注销完成指令是通过所述网页浏览器的重定向功能转发的。
225.可选地,所述装置还包括:注销模块704。
226.所述注销模块704,用于所述前端程序向所述后端程序转发所述注销完成指令,完成注销操作。
227.综上所述,本实施例在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端程序使用该一次性编码向后端程序换取登录令牌,可以提高登录的安全性,防止他人恶意登录。
228.图8示出了本申请的一个示例性实施例提供的单点登录装置的框图,该装置800包括服务器,前述终端的网页浏览器中运行有第一应用系统的前端程序,前述服务器中运行有第一应用系统的后端程序,该装置包括:
229.接收模块802,用于接收所述第一应用系统的前端程序发送的登录请求,所述前端程序运行于终端的网页浏览器中,所述登录请求是所述前端程序响应于与第一租户对应的登录请求发送的;
230.发送模块801,用于所述后端程序在验证第一用户账号的身份信息成功时,向所述前端程序发送一次性编码;
231.所述发送模块801,还用于所述后端程序根据所述一次性编码,向所述前端程序发
送登录令牌,完成登录操作。
232.可选地,所述接收模块802,还用于所述后端程序接收第一用户账号的身份信息,所述第一用户账号的身份信息是所述网页浏览器和身份提供方服务器之间存在可信任的未失效会话时由所述身份提供方服务器发送的。
233.可选地,所述发送模块801,还用于所述后端程序在验证所述第一用户账号的身份信息成功时,向所述前端程序发送所述一次性编码,所述一次性编码是通过所述网页浏览器的重定向功能进行转发的,所述第一用户账号属于所述第一租户,所述前端程序和所述后端程序运行于同一域名的不同路径下。
234.可选地,所述接收模块802,还用于所述单点登录框架接收所述第一用户账号的身份信息;所述第一用户账号的身份信息是在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时由所述身份提供方服务器发送的;
235.可选地,所述接收模块802,还用于所述后端程序接收所述单点登录框架转发的所述第一用户账号的身份信息。
236.可选地,所述接收模块802,还用于所述单点登录框架获得所述身份提供方服务器的地址配置信息。
237.可选地,所述发送模块801,还用于所述单点登录框架根据所述地址配置信息,向所述身份提供方服务器发送身份认证请求,所述身份认证请求是通过所述网页浏览器的重定向功能转发的。
238.可选地,所述接收模块802,还用于所述单点登录框架获得身份认证反馈,所述身份认证反馈是所述身份提供方服务器在所述网页浏览器和所述身份提供方服务器之间存在可信任的未失效会话时发送的,所述身份认证反馈是通过所述网页浏览器的重定向功能转发的;所述单点登录框架根据所述身份认证反馈,获得所述第一用户账户的身份信息。
239.可选地,所述接收模块802,还用于所述后端程序接收所述前端程序的注销请求,所述注销请求是所述前端程序响应于所述第一租户中的第一用户账户对应的注销操作发送的。
240.可选地,所述装置800还包括:
241.注销模块804,用于所述后端程序根据所述注销请求,销毁所述登录令牌;
242.可选地,所述发送模块801,还用于所述后端程序向所述身份提供方服务器发送全局注销请求。
243.可选地,所述注销模块804,还用于所述后端程序接收所述前端程序转发的注销完成指令,完成注销操作。
244.可选地,所述发送模块801,还用于所述后端程序向所述单点登录框架发送局部注销完成指令,所述局部注销完成指令是通过所述网页浏览器的重定向功能转发的。
245.可选地,所述发送模块801,还用于所述单点登录框架获得所述局部注销完成指令后,所述单点登录框架向所述身份提供方服务器发送所述全局注销请求,所述全局注销请求是通过所述网页浏览器的重定向功能转发的。
246.综上所述,本实施例在前后端分离的应用系统中实现单点登录,前后端分离可以降低前后端程序的耦合度,易于定位错误,减少服务器的运算压力,提高前后端程序的开发效率。同时,应用系统的后端程序向前端程序发送一次性编码,前端程序使用该一次性编码
向后端程序换取登录令牌,可以提高登录的安全性,防止他人恶意登录。
247.图9是本申请一个示例性实施例提供的服务器的结构示意图。具体来讲:服务器900包括中央处理单元(英文:central processing unit,简称:cpu)901、包括随机存取存储器(英文:random access memory,简称:ram)902和只读存储器(英文:read

only memory,简称:rom)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。计算机设备900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)906,和用于存储操作系统913、应用程序914和其他程序模块915的大容量存储设备907。
248.基本输入/输出系统906包括有用于显示信息的显示器908和用于用户输入信息的诸如鼠标、键盘之类的输入设备909。其中显示器908和输入设备909都通过连接到系统总线905的输入/输出控制器910连接到中央处理单元901。基本输入/输出系统906还可以包括输入/输出控制器910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器910还提供输出到显示屏、打印机或其他类型的输出设备。
249.大容量存储设备907通过连接到系统总线905的大容量存储控制器(未示出)连接到中央处理单元901。大容量存储设备907及其相关联的计算机可读介质为服务器900提供非易失性存储。也就是说,大容量存储设备907可以包括诸如硬盘或者只读光盘(英文:compact disc read

only memory,简称:cd

rom)驱动器之类的计算机可读介质(未示出)。
250.不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、可擦除可编程只读存储器(英文:erasable programmable read

only memory,简称:eprom)、电可擦除可编程只读存储器(英文:electrically erasable programmable read

only memory,简称:eeprom)、闪存或其他固态存储其技术,cd

rom、数字通用光盘(英文:digital versatile disc,简称:dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器904和大容量存储设备907可以统称为存储器。
251.根据本申请的各种实施例,服务器900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器900可以通过连接在系统总线905上的网络接口单元911连接到网络912,或者说,也可以使用网络接口单元1211来连接到其他类型的网络或远程计算机系统(未示出)。
252.根据本申请的另一方面,还提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条程序代码,程序代码由处理器加载并执行以实现如上述的单点登录方法。
253.根据本申请的另一方面,还提供了一种计算机程序产品或计算机程序,上述计算机程序产品或计算机程序包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上述的单点登录方法。
254.应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
255.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
256.以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1