单点登录的实现方法、认证中心服务器及存储介质与流程

未命名 09-22 阅读:84 评论:0


1.本发明实施例涉及云平台技术领域,尤其涉及一种单点登录的实现方法、认证中心服务器及存储介质。


背景技术:

2.单点登录(singlesignon,sso),指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。对于浏览器和服务器(b/s)架构的全球广域网(world wide web,web)端应用,单点登录可以狭义的认为是多个网站的互信登录。
3.针对微服务和多服务的环境,如何实现单点登录,是亟待解决的技术问题。


技术实现要素:

4.本发明实施例提供一种单点登录的实现方法、认证中心服务器及存储介质,用于解决如何实现微服务和多服务的环境下的单点登录的问题。
5.为了解决上述技术问题,本发明是这样实现的:
6.第一方面,本发明实施例提供了一种单点登录的实现方法,包括:
7.认证中心服务器接收到浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据;
8.所述认证中心服务器在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;所述认证中心服务器接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求用于获取所述第二应用的令牌,所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;所述认证中心服务器根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。
9.可选的,所述认证中心服务器接收到浏览器或第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据包括:
10.所述认证中心服务器接收到所述浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及所述第一应用的标识和密码进行验证,如果验证通过,向所述浏览器或所述第一应用的后端发送第二应答,所述第二应答中包括所述第一应用的令牌,用户身份票据和用户信息;
11.所述认证中心服务器接收所述浏览器发送的第二访问请求,所述第二访问请求中
携带所述用户身份票据;
12.所述认证中心服务器设置cookie以及将cookie的目标键的值设为所述用户身份票据,并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带所述第一应用的首页地址。
13.可选的,所述认证中心服务器接收浏览器或第一应用的后端发送的用于登录第一应用的用户登录请求之前还包括:
14.所述认证中心服务器在接收到所述网关发送的对所述第一应用的访问请求进行认证的第二认证请求,且判定用户未登录所述第一应用之后,向所述浏览器发送拒绝访问所述第一应用的第二指示信息;
15.所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第二查询请求且查询到所述目标键不存在之后,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述目标键;
16.所述认证中心服务器接收所述浏览器或第一应用的后端发送的第三访问请求,所述第三访问请求用于获取所述第一应用的令牌;
17.所述认证中心服务器确定出所述第三访问请求中未携带用户身份票据,向所述浏览器发送拒绝提供所述第一应用的令牌的指示信息。
18.可选的,所述对所述用户登录请求验证通过之后还包括:
19.所述认证中心服务器接收所述网关发送的对请求访问所述第一应用的访问请求进行认证的第三认证请求,所述第三认证请求携带所述第一应用的令牌;
20.所述认证中心服务器根据所述第一应用的令牌,判定所述用户已登录所述第一应用;
21.所述认证中心服务器向所述网关发送第四应答,所述第四应答应用指示允许访问第一应用的受保护的页面或资源。
22.可选的,所述向所述浏览器发送第一重定向请求之后还包括:
23.所述认证中心服务器接收所述网关发送的对请求访问所述第二应用的访问请求进行认证的第四认证请求,所述第四认证请求携带所述第二应用的令牌;
24.所述认证中心服务器根据所述第二应用的令牌,判定所述用户已登录所述第二应用;
25.所述认证中心服务器向所述网关发送第五应答,所述第五应答应用指示允许访问第二应用的受保护的页面或资源。
26.可选的,所述方法还包括:
27.所述认证中心服务器接收所述网关发送的第一应用或第二应用的登出请求;所述认证中心服务器退出所述第一应用或第二应用的令牌,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,退出所述其他应用的令牌;所述认证中心服务器删除所述用户身份票据。
28.可选的,所述方法还包括:
29.所述认证中心服务器接收所述网关发送的对请求访问所述第一应用或第二应用的访问请求进行认证的第三认证请求或第四认证请求,所述第三认证请求携带所述第一应用的令牌,所述第四认证请求携带所述第二应用的令牌;所述认证中心服务器根据所述第
一应用或第二应用的令牌,判定所述用户已登录所述第一应用或第二应用;所述认证中心服务器向所述网关发送第四应答或第五应答,所述第四应答应用指示允许访问所述第一应用的受保护的页面或资源;所述第五应答应用指示允许访问所述第二应用的受保护的页面或资源;所述认证中心服务器为所述第一应用或第二应用的令牌续期,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,为所述其他应用的令牌续期。
30.第二方面,本发明实施例提供了一种认证中心服务器,包括:
31.第一应用登录模块,用于接收到浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据;
32.单点登录模块,用于在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求用于获取所述第二应用的令牌,所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。
33.第三方面,本发明实施例提供了一种认证中心服务器,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述单点登录的实现方法的步骤。
34.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述单点登录的实现方法的步骤。
35.在本发明实施例中,实现微服务和多服务的环境下的单点登录。
附图说明
36.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
37.图1为本发明实施例涉及的单点登录系统的结构示意图;
38.图2为本发明实施例的单点登录的实现方法的流程示意图;
39.图3为本发明实施例的用户首次访问第一应用(app1)被保护的资源的流程示意图;
40.图4为本发明实施例的用户登录第一应用(app1)的流程示意图;
41.图5为本发明实施例的用户查看第一应用(app1)资源或页面的流程示意图;
42.图6为本发明实施例的用户首次访问第二应用(app2)被保护的资源的流程示意图;
43.图7为本发明实施例的用户查看第二应用(app2)资源或页面的流程示意图;
44.图8为本发明实施例的用户首次访问第一应用(app1)被保护的资源的另一流程示意图;
45.图9为本发明实施例的用户登录第一应用(app1)的另一流程示意图;
46.图10为本发明实施例的用户首次访问第二应用(app2)被保护的资源的另一流程示意图;
47.图11为为本发明实施例的单点登出的流程示意图;
48.图12为本发明实施例的会话同步续期的流程示意图;
49.图13为本发明实施例的认证中心服务器的结构示意图;
50.图14为本发明实施例的认证中心服务器的另一结构示意图。
具体实施方式
51.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.请参考图1,图1为本发明实施例涉及的单点登录系统的结构示意图,该系统包括应用的前端(浏览器),行业云底座和应用的后端(应用服务或称为应用服务器),其中行业云底座又包括网关和认证中心服务器。
53.本发明实施例中,应用也可以称为应用系统。
54.其中,行业云底座可以为微服务、多服务的环境提供统一的登录、认证和授权功能,独立的用户服务,为微服务、多服务的环境提供用户、组织、角色、应用的增删改查服务。
55.本发明实施例中,在实现单点登录之前,需要实现单点登录的应用要首先接入行业云底座,包括以下步骤:
56.步骤11:在行业云底座申请添加一个应用,得到为所述应用生成的标识(clientid)和密码(clientsecret)。clientid是行业云底座的网关和认证中心服务器识别不同应用的唯一标识,clientsecret是应用系统证明自己的密码。
57.步骤12:在行业云底座添加应用相关的角色,接口和菜单信息,并设置角色,接口和菜单的关系,举例来说,角色可以包括:管理员,角色1和角色2。角色,接口和菜单的关系(也称为规则)可以包括:“只有管理员登录才能访问应用系统”,“角色a能访问应用系统的x功能,角色b能访问应用系统的y功能”,“某个组织的人,在上午不能使用某种设备访问应用系统的某个功能”等。
58.本发明实施例中,行业云底座的认证中心服务器可以为应用进行认证授权,每个应用也可以具有自身的认证模块或认证中心服务器。
59.本发明实施例中,前端需要调用登录、查询登录者信息、查询登录者菜单、退出登录这4个接口。这4个接口行业云底座的认证中心服务器已经提供了,不需要应用再开发。
60.本发明实施例中,后端最核心的接入,就是获取当前登录者。后端需要记录某个记录的增加、修改者,或者根据用户的角色、组织做一些逻辑,都需要当前登录者的信息。
61.本发明实施例中,单点登录的后端主要涉及(以下)4个接口(下面实施例会具体说
明),这4个接口最终都会重定向,不是返回json的rest接口,所以调用这些接口需要window.location.href,而不是使用axios之类的工具调用。
62.1.登录接口
63.该接口在前端登录成功后调用,目的是将用户身份票据(ticket)挂到认证中心服务器的cookie中。
64.2.获取ticket接口
65.该接口在前端调用表述性状态传递(representational state transfer,rest)接口得到401后,到认证中心服务器查看用户是否已经登录,登录的结果就是得到ticket。
66.3.获取令牌(token)接口
67.根据ticket、client-id、client-secret获取自己应用的token。
68.4.登出接口
69.该接口在前端登出成功后调用,退出所有的系统。
70.请参考图2,本发明实施例提供一种单点登录的实现方法,包括:
71.步骤21:第一应用登录步骤,其中,所述第一应用登录步骤包括:认证中心服务器接收到浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值(value)设为为用户生成的用户身份票据(ticket);
72.本发明实施例中,与现有的单点登录不同的是,当用户登录第一应用后,认证中心服务器设置cookie,后续用户访问参与单点登录的第二应用时,如果查询到所述目标键已存在,则第二应用可以不用登录,从而实现单点登录。
73.本发明实施例中,设置cookie即设置cookie的目标健(key),所述目标健例如可以是castgc,或者其他健,本发明不做限制。
74.步骤22:单点登录步骤,其中,所述单点登录步骤包括:所述认证中心服务器在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;所述认证中心服务器接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求用于获取所述第二应用的令牌(token),所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;所述认证中心服务器根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。
75.本发明实施例中,第一应用和第二应用是参与单点登录的应用,第一应用和第二应用可以是某个应用中的一组服务,即微服务或多服务。
76.本发明实施例中,可选的,所述第一应用的后端和所述第二应用的后端的ip和/或端口不同。对于浏览器来说,ip和/或端口不同,就是不同的域,即,本发明可以实现跨域单点登录。
77.本发明实施例中,可选的,每个应用都有自身的登录页面。用户在浏览器登录了第
一应用(比如www.a.com)的页面,打开浏览器,直接输入第二应用的网址(比如www.b.com),即可自动单点登录,即实现了刷新登录。
78.本发明实施例中,每个应用具有自己的登录页,可以从任意应用登录开始,假设应用a、b、c参与单点登录,则可以从a登录,然后b、c自动登录,或者,从b登录,a、c自动登录或者,从c登录,a、b自动登录。
79.本发明实施例中,可选的,所述第一应用登录步骤之前还包括:
80.所述认证中心服务器在接收到所述网关发送的对所述第一应用的访问请求进行认证的第二认证请求,且判定用户未登录所述第一应用之后,向所述浏览器发送拒绝访问所述第一应用的第二指示信息;
81.所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第二查询请求且查询到所述目标键不存在之后,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述目标键;
82.所述认证中心服务器接收所述浏览器或第一应用的后端发送的第三访问请求,所述第三访问请求用于获取所述第一应用的令牌;
83.所述认证中心服务器确定出所述第三访问请求中未携带用户身份票据,向所述浏览器发送拒绝提供所述第一应用的令牌的指示信息。
84.下面举例进行说明。
85.请参考图3,图3为本发明实施例的用户首次访问第一应用(app1)被保护的资源的流程示意图,该流程包括:
86.步骤101:浏览器(即图中的页面)向网关发送访问请求,用于访问app1受保护的页面或资源(例如,访问的网址可以是http://www.app1.com/api/app1/resource);
87.步骤102:网关向认证中心服务器发送对app1的访问请求进行认证的第二认证请求,即网关调用认证中心服务器进行认证授权;
88.步骤103:认证中心服务器判定用户未登录app1,向浏览器发送拒绝访问app1的第二指示信息(即401);
89.上述步骤101至步骤103为超文本传输协议(hyper text transfer protocol,http)接口调用,返回的可以是json(javascript object notation,js对象简谱,是一种轻量级的数据交换格式)数据。
90.步骤104:浏览器得到401,进行window.location.href(http://www.app1.com/sso/auth/sso/redirect);
91.步骤105:ngnix进行重定向。
92.步骤106:浏览器向认证中心服务器发送用于查询cookie的第二查询请求,第二查询请求携带期待的重定向地址(http://www.gateway.com/auth/sso/redirect);
93.步骤107:认证中心服务器查询到所述cookie castgc不存在,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述cookie castgc。
94.步骤108:浏览器向认证中心服务器发送的第三访问请求,所述第三访问请求用于获取app1的令牌(token),即浏览器根据ticket换取app1的token(http://www.app1.com/api/sso/login);
95.步骤109:认证中心服务器确定出所述第三访问请求中未携带用户身份票据
(ticket),向所述浏览器发送拒绝提供app1的令牌的指示信息(http://www.app1.com/#/auth-redirect?token),所述指示信息中包括app1的登录页面的地址。
96.步骤110:浏览器未得到app1的token,显示app1的登录页面。
97.上述http://www.app1.com/sso/auth/sso/redirect、http://www.gateway.com/auth/sso/redirect和http://www.app1.com/api/sso/login对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
98.上述步骤105、步骤107和步骤109是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
99.本发明实施例中,应用的前端存在ngnix(是一个高性能的http和反向代理web服务器,同时也提供了imap/pop3/smtp服务),使得与后端的交互很少,减少了后端的开发成本。
100.在本发明的一些实施例中,应用的前端也可以没有ngnix,下面对应用的前端没有ngnix的情况下,本发明的实现方法举例进行说明。
101.请参考图8,图8为本发明实施例的用户首次访问第一应用(app1)被保护的资源的另一流程示意图,该流程包括:
102.步骤101’:浏览器(即图中的页面)向网关发送访问请求,用于访问app1受保护的页面或资源(例如,访问的网址可以是http://www.gateway.com/app1/resource);
103.步骤102’:网关向认证中心服务器发送对app1的访问请求进行认证的第二认证请求,即网关调用认证中心服务器进行认证授权;
104.步骤103’:认证中心服务器判定用户未登录app1,向浏览器发送拒绝访问app1的第二指示信息(即401);
105.上述步骤101’至步骤103’为超文本传输协议(hyper text transfer protocol,http)接口调用,返回的可以是json(javascript object notation,js对象简谱,是一种轻量级的数据交换格式)数据。
106.步骤104’:浏览器得到401,进行window.location.href;浏览器向认证中心服务器发送用于查询cookie的第二查询请求,第二查询请求携带期待的重定向地址(http://www.gateway.com/auth/sso/redirect);
107.步骤105’:认证中心服务器查询到所述cookie castgc不存在,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述cookie castgc。
108.步骤106’:浏览器向后端发送的访问请求(http://www.gateway.com/app1/sso/ticket);
109.步骤107’:后端根据访问请求,生成第三访问请求并发送给认证中心服务器,所述第三访问请求中未携带用户身份票据(ticket),所述访问请求用于获取app1的令牌(token)。由于所述第三访问请求中ticket为空,因而认证中心服务器不返回app1的令牌(token),向所述浏览器发送拒绝提供app1的令牌的指示信息。后端根据所述指示信息向浏览器发送第三重定向请求,所述第三重定向请求中携带app1的登录页面。
110.步骤108’:浏览器未得到app1的token,显示app1的登录页面。
111.上述http://www.gateway.com/auth/sso/redirect和http://www.gateway.com/app1/sso/ticket对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
112.上述步骤105’和步骤107’是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
113.本发明实施例中,可选的,所述第一应用登录步骤包括:
114.所述认证中心服务器接收到所述浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及所述第一应用的标识和密码进行验证,如果验证通过,向所述浏览器或所述第一应用的后端发送第二应答,所述第二应答中包括所述第一应用的令牌,用户身份票据和用户信息;
115.所述认证中心服务器接收所述浏览器发送的第二访问请求,所述第二访问请求中携带所述用户身份票据;
116.所述认证中心服务器设置cookie以及将cookie的目标键的值设为所述用户身份票据,并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带所述第一应用的首页地址。
117.下面举例进行说明。
118.请参考图4,图4为本发明实施例的用户登录第一应用(app1)的流程示意图,该流程包括:
119.步骤111:用户在浏览器的页面输入用户登录名和登录密码,点击登录按钮,浏览器向认证中心服务器发送用户登录请求(http://www.app1.com/api/auth/account/login header client-id=app1client-secret=123456)。所述用户登录请求中携带用户登录名和登录密码以及app1的标识(client-id=app1)和密码(client-secret=123456)。
120.步骤112:认证中心服务器接收到所述浏览器发送的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及app1的标识和密码进行验证,如果验证通过,向所述浏览器发送第二应答,所述第二应答中包括app1的令牌(token),用户身份票据(ticket)和用户信息;例如,token=123123,ticket=tgt-abc;
121.上述步骤111和步骤112为http接口调用,返回的可以是json数据。
122.步骤113:浏览器接收到第二应答,将第二应答中的token和ticket存入本地存储器(localstorage),携带ticket进行window.location.href认证中心服务器(http://www.app1.com/api/sso/auth/sso/login);
123.步骤114:nginx进行重定向。
124.步骤115:浏览器向认证中心服务器发送第二访问请求,所述第二访问请求中携带所述用户身份票据(ticket)(http://www.gateway.com/auth/sso/login?ticket=tgt-abc);
125.步骤116:所述认证中心服务器接收到第二访问请求之后,设置cookie castgc以及将cookie castgc对应的值(value)设为所述用户身份票据(ticket),并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带app1的首页地址。
126.步骤117:浏览器显示app1的首页。
127.上述http://www.app1.com/api/sso/auth/sso/login和http://www.gateway.com/auth/sso/login?ticket=tgt-abc对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
128.上述步骤114和步骤116是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
129.本发明实施例中,应用的前端存在ngnix(是一个高性能的http和反向代理web服务器,同时也提供了imap/pop3/smtp服务),使得与后端的交互很少,减少了后端的开发成本。
130.在本发明的一些实施例中,应用的前端也可以没有ngnix,下面对应用的前端没有ngnix的情况下,本发明的实现方法举例进行说明。
131.请参考图9,图9为本发明实施例的用户登录第一应用(app1)的另一流程示意图,该流程包括:
132.步骤111’:用户在浏览器的页面输入用户登录名和登录密码,点击登录按钮,浏览器向后端发送用户登录请求(http://www.gateway.com/app1/login)。所述用户登录请求中携带用户登录名和登录密码以及app1的标识(client-id=app1)和密码(client-secret=123456)。
133.步骤112’:后端接收到用户登录请求之后,向认证中心服务器发送用户登录请求,认证中心服务器接收到所述浏览器发送的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及app1的标识和密码进行验证,如果验证通过,向后端发送第二应答,所述第二应答中包括app1的令牌(token),用户身份票据(ticket)和用户信息;例如,token=123123,ticket=tgt-abc;
134.步骤113’:后端向浏览器发送所述第二应答。
135.上述步骤111’、步骤112’和步骤113’为http接口调用,返回的可以是json数据。
136.步骤114’:浏览器接收到第二应答,将第二应答中的token存入本地存储器(localstorage),携带ticket进行window.location.href认证中心服务器(第二访问请求)(http://www.gateway.com/auth/sso/login?ticket=tgt-abc);
137.步骤115’:所述认证中心服务器接收到浏览器发送的第二访问请求之后,设置cookie castgc以及将cookie castgc对应的值(value)设为所述用户身份票据(ticket),并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带app1的首页地址。
138.步骤116’:浏览器显示app1的首页。
139.上述http://www.gateway.com/auth/sso/login?ticket=tgt-abc对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
140.上述步骤115’是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
141.本发明实施例中,可选的,所述第一应用登录步骤之后还包括:
142.所述认证中心服务器接收所述网关发送的对请求访问所述第一应用的访问请求
进行认证的第三认证请求,所述第三认证请求携带所述第一应用的令牌;
143.所述认证中心服务器根据所述第一应用的令牌,判定所述用户已登录所述第一应用;
144.所述认证中心服务器向所述网关发送第四应答,所述第四应答应用指示允许访问第一应用的受保护的页面或资源。
145.下面举例进行说明。
146.请参考图5,图5为本发明实施例的用户查看第一应用(app1)资源或页面的流程示意图,该流程包括:
147.步骤118:浏览器向网关发送请求访问app1的收保护的页面或资源的访问请求,访问请求中携带app1的token(http://www.app1.com/api/app1/resource header token=123123);
148.步骤119:网关向认证中心服务器发送对请求访问所述第一应用的访问请求进行认证的第三认证请求,所述第三认证请求携带app1的token,即网关调用认证中心服务器对上述访问请求进行认证授权;
149.步骤120:认证中心服务器根据app1的token,判定用户已登录app1,向所述网关发送第四应答,所述第四应答应用指示允许访问app1的受保护的页面或资源。
150.步骤121:网关向app1的后端发送资源调用请求;
151.步骤122:app1的后端获取当前登录用户,返回登录用户请求的资源信息;
152.步骤123:浏览器获取app1的资源成功。
153.上述步骤118至步骤122为http接口调用,返回的可以是json数据。
154.本发明实施例中,前端不存在ngnix的情况下,用户查看第一应用(app1)资源或页面的流程示意图与上述图5所示的实施例一致,不再重复描述。
155.请参考图6,图6为本发明实施例的用户首次访问第二应用(app2)被保护的资源的流程示意图,该流程包括以下步骤:
156.步骤201:浏览器(即图中的页面)向网关发送访问请求,用于访问app2受保护的页面或资源(例如,访问的网址可以是http://www.app2.com/api/app2/resource);
157.步骤202:网关向认证中心服务器发送对app2的访问请求进行认证的第一认证请求,即网关调用认证中心服务器进行认证授权;
158.步骤203:认证中心服务器判定用户未登录app2,向浏览器发送拒绝访问app1的第一指示信息(即401);
159.上述步骤201至步骤203为超文本传输协议(hyper text transfer protocol,http)接口调用,返回的可以是json(javascript object notation,js对象简谱,是一种轻量级的数据交换格式)数据。
160.步骤204:浏览器得到401,进行window.location.href(http://www.app2.com/sso/auth/sso/redirect);
161.步骤205:ngnix进行重定向。
162.步骤206:浏览器向认证中心服务器发送用于查询cookie的第一查询请求,第一查询请求携带期待的重定向地址(http://www.gateway.com/auth/sso/redirect);
163.步骤207:认证中心服务器查询到所述cookie castgc已存在,向所述浏览器发送
第一应答,所述第一应答中携带用户身份票据(ticket);
164.步骤208:浏览器向所述认证中心服务器发送第一访问请求,所述第一访问请求用于获取app2的令牌(token),所述第一访问请求中包括所述用户身份票据,app2的标识和密码(http://www.app2.com/api/sso/login header client-id=app2 client-secret=123456);即浏览器根据ticket换取app2的token;
165.步骤209:所述认证中心服务器根据所述用户身份票据(ticket)获取用户信息,并根据app2的标识(client-id)和密码(client-secret)验证app2,当验证通过后,根据所述用户信息和app2的信息,生成app2的令牌(token),并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带app2的令牌(token)(http://www.app2.com/#/auth-redirect?token=456456)。
166.步骤210:浏览器接收到第一重定向请求,将第一重定向请求中的token存入本地存储器(localstorage)。
167.上述http://www.app2.com/sso/auth/sso/redirect http://www.gateway.com/auth/sso/redirect和http://www.app2.com/api/sso/login header client-id=app2 client-secret=123456对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
168.上述步骤205、步骤207和步骤209是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
169.本发明实施例中,应用的前端存在ngnix(是一个高性能的http和反向代理web服务器,同时也提供了imap/pop3/smtp服务),使得与后端的交互很少,减少了后端的开发成本。
170.在本发明的一些实施例中,应用的前端也可以没有ngnix,下面对应用的前端没有ngnix的情况下,本发明的实现方法举例进行说明。
171.请参考图10,图10为本发明实施例的用户首次访问第二应用(app2)被保护的资源的另一流程示意图,该流程包括以下步骤:
172.步骤201’:浏览器(即图中的页面)向网关发送访问请求,用于访问app2受保护的页面或资源(例如,访问的网址可以是http://www.gateway.com/app2/resource);
173.步骤202’:网关向认证中心服务器发送对app2的访问请求进行认证的第一认证请求,即网关调用认证中心服务器进行认证授权;
174.步骤203’:认证中心服务器判定用户未登录app2,向浏览器发送拒绝访问app1的第一指示信息(即401);
175.上述步骤201’至步骤203’为超文本传输协议(hyper text transfer protocol,http)接口调用,返回的可以是json(javascript object notation,js对象简谱,是一种轻量级的数据交换格式)数据。
176.步骤204’:浏览器得到401,进行window.location.href;向认证中心服务器发送用于查询cookie的第一查询请求,第一查询请求携带期待的重定向地址(http://www.gateway.com/auth/sso/redirect);
177.步骤205’:认证中心服务器查询到所述cookie castgc已存在,向所述浏览器发送
第一应答,所述第一应答中携带用户身份票据(ticket);
178.步骤206’:浏览器向后端发送访问请求,所述访问请求用于获取app2的令牌(token),所述访问请求中包括所述用户身份票据(ticket),app2的标识和密码(http://www.gateway.com/app1/sso/ticket=tgt-at);
179.步骤207’:后端接收到访问请求之后,携带用户身份票据(ticket),app2的标识和密码调用认证中心服务器获取app2的令牌(token);
180.步骤208’:所述认证中心服务器根据所述用户身份票据(ticket)获取用户信息,并根据app2的标识(client-id)和密码(client-secret)验证app2,当验证通过后,根据所述用户信息和app2的信息,生成app2的令牌(token),并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带app2的令牌(token)(http://www.app2.com/#/auth-redirect?token=456456)。
181.步骤209’:浏览器接收到第一重定向请求,将第一重定向请求中的token存入本地存储器(localstorage)。
182.上述http://www.gateway.com/auth/sso/redirect和http://www.gateway.com/app1/sso/ticket=tgt-at对应的步骤是页面跳转,需要重定向或进行window.location.href(是用新的域名替换当前页,也就是重新定位当前页)。
183.上述步骤205’和步骤209’是重定向,可以从浏览器f12中观察到301或302(301和302状态码都表示重定向,当浏览器收到服务器返回的这个状态码后自动跳转到一个新的统一资源定位器(uniform resource locator,url)地址)。
184.本发明实施例中,可选的,所述单点登录步骤之后还包括:
185.所述认证中心服务器接收所述网关发送的对请求访问所述第二应用的访问请求进行认证的第四认证请求,所述第四认证请求携带所述第二应用的令牌;
186.所述认证中心服务器根据所述第二应用的令牌,判定所述用户已登录所述第二应用;
187.所述认证中心服务器向所述网关发送第五应答,所述第五应答应用指示允许访问第二应用的受保护的页面或资源。
188.下面举例进行说明。
189.请参考图7,图7为本发明实施例的用户查看第二应用(app2)资源或页面的流程示意图,该流程包括:
190.步骤211:浏览器向网关发送请求访问app2的收保护的页面或资源的访问请求,访问请求中携带app2的token(http://www.app2.com/api/app2/resource header token=456456);
191.步骤212:网关向认证中心服务器发送对请求访问app2的访问请求进行认证的第四认证请求,所述第四认证请求携带app2的token,即网关调用认证中心服务器对上述访问请求进行认证授权;
192.步骤213:认证中心服务器根据app2的token,判定用户已登录app2,向所述网关发送第五应答,所述第五应答应用指示允许访问app2的受保护的页面或资源。
193.步骤214:网关向app2的后端发送资源调用请求;
194.步骤215:app2的后端获取当前登录用户,返回登录用户请求的资源信息;
195.步骤216:浏览器获取app2的资源成功。
196.上述步骤211至步骤214为http接口调用,返回的可以是json数据。
197.本发明实施例中,前端不存在ngnix的情况下,用户查看第二应用(app2)资源或页面的流程示意图与上述图7所示的实施例一致,不再重复描述。
198.本发明实施例中,可选的,所述单点登录步骤之后还包括:单点登出步骤:所述认证中心服务器接收所述网关发送的第一应用或第二应用的登出请求;所述认证中心服务器退出所述第一应用或第二应用的令牌,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,退出所述其他应用的令牌;所述认证中心服务器删除所述用户身份票据。
199.本发明实施例中,可以实现前后端架构的应用的单点登出。举例来说,a、b、c三个应用,在a登录,b和c将自动单点登录。此时在b退出,则a、b、c三个应用都将退出,在a、c退出亦是如此。
200.下面举例进行说明。
201.请参考图11,图11为本发明实施例的单点登出的流程示意图,该流程包括:
202.步骤301:浏览器向网关发送app1的登出请求。登录请求中携带app1的令牌(token1)。
203.步骤302:网关向认证中心服务器发送app1的登出请求,即调用认证中心服务器退出app1。
204.步骤303:所述认证中心服务器退出app1的令牌(token1)。
205.步骤304:所述认证中心服务器查询当前是否存在其他app的令牌,若查询到存在其他应用的令牌(如app2的令牌token2),退出所述其他应用的令牌。
206.步骤305:所述认证中心服务器删除用户身份票据(ticket),并通知浏览器。
207.步骤306:浏览器返回app1的登录页。
208.步骤307:浏览器向网关发送请求访问app2的收保护的页面或资源的访问请求,访问请求中携带app2的token(http://www.app2.com/api/app2/resource?token=token2);
209.步骤308:网关向认证中心服务器发送对请求访问app2的访问请求进行认证的第四认证请求,所述第四认证请求携带app2的token,即网关调用认证中心服务器对上述访问请求进行认证授权;
210.步骤309:认证中心服务器查询到app2的令牌已经失效,判定用户未登录app2,向所述浏览器发送拒绝访问app2的第一指示信息(401);
211.步骤310:浏览器德奥第一指示信息(401)。
212.本发明实施例中,可选的,所述单点登录步骤之后还包括:
213.会话(session)同步续期步骤:所述认证中心服务器接收所述网关发送的对请求访问所述第一应用或第二应用的访问请求进行认证的第三认证请求或第四认证请求,所述第三认证请求携带所述第一应用的令牌,所述第四认证请求携带所述第二应用的令牌;所述认证中心服务器根据所述第一应用或第二应用的令牌,判定所述用户已登录所述第一应用或第二应用;所述认证中心服务器向所述网关发送第四应答或第五应答,所述第四应答应用指示允许访问所述第一应用的受保护的页面或资源;所述第五应答应用指示允许访问所述第二应用的受保护的页面或资源;所述认证中心服务器为所述第一应用或第二应用的
令牌续期,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,为所述其他应用的令牌续期。
214.通过本发明实施例,可以实现前后端结构下的会话同步续期。举例来说,如果登录了a应用,并在浏览器中打开了b应用,单点登录成功,此时只访问a应用,比如访问72小时后,然后退出b应用,b应用仍处于登录状态,并且会话剩余时间和a相同。
215.本实施例中,认证中心服务器在每次收到认证请求时,都会对访问的token及该用户在其他应用上的token进行续期,比如session的时间是30分钟,用户单点登录了app1和app2,然后用户在60分内都不断访问app1,由于session续期的机制,用户不会掉线,此时用户访问app2,用户也不会在app2掉线,因为访问app1进行session续期的时候,也会续期app2的token。续期的动作是异步的,这样可以提升访问效率。
216.下面举例进行说明。
217.请参考图12,图12为本发明实施例的会话同步续期的流程示意图,该流程包括:
218.步骤401:浏览器向网关发送请求访问app1的收保护的页面或资源的访问请求,访问请求中携带app1的token(http://www.app1.com/api/app1/resource header token=123123);
219.步骤402:网关向认证中心服务器发送对请求访问app1的访问请求进行认证的第三认证请求,所述第三认证请求携带app1的token,即网关调用认证中心服务器对上述访问请求进行认证授权;
220.步骤403:认证中心服务器根据app1的token,判定用户已登录app1,向所述网关发送第四应答,所述第四应答应用指示允许访问app1的受保护的页面或资源。
221.步骤404:认证中心服务器为app1的token续期。
222.步骤405:认证中心服务器为该用户的其他app(如app2)的token续期。
223.步骤406:网关向app1的后端发送资源调用请求;
224.步骤407:app1的后端获取当前登录用户,返回登录用户请求的资源信息;
225.步骤408:浏览器获取app1的资源成功。
226.本发明的上述实施例中,若应用的前端使用代理(nginx),应用迁移只需要修改前端nginx配置文件和回调地址即可,迁移成本较低。
227.上述实施例中,可以实现同时满足跨域单点登录、刷新单点登录、拥有自己的登录页、单点登出和session同步续期等功能。
228.请参考图13,本发明实施例还提供一种认证中心服务器130,该认证中心服务器130包括:
229.第一应用登录模块131,用于接收到浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据;
230.单点登录模块132,用于在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求
用于获取所述第二应用的令牌,所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;所述认证中心服务器根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。
231.可选的,第一应用登录模块131,用于接收到所述浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及所述第一应用的标识和密码进行验证,如果验证通过,向所述浏览器或所述第一应用的后端发送第二应答,所述第二应答中包括所述第一应用的令牌,用户身份票据和用户信息;接收所述浏览器发送的第二访问请求,所述第二访问请求中携带所述用户身份票据;设置cookie以及将cookie的目标键的值设为所述用户身份票据,并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带所述第一应用的首页地址。
232.可选的,所述认证中心服务器130还包括:
233.第一访问模块,用于在接收到所述网关发送的对所述第一应用的访问请求进行认证的第二认证请求,且判定用户未登录所述第一应用之后,向所述浏览器发送拒绝访问所述第一应用的第二指示信息;接收到所述浏览器发送的用于查询cookie的第二查询请求且查询到所述目标键不存在之后,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述目标键;接收所述浏览器或第一应用的后端发送的第三访问请求,所述第三访问请求用于获取所述第一应用的令牌;确定出所述第三访问请求中未携带用户身份票据,向所述浏览器发送拒绝提供所述第一应用的令牌的指示信息。
234.可选的,所述认证中心服务器130还包括:
235.第二访问模块,用于接收所述网关发送的对请求访问所述第一应用的访问请求进行认证的第三认证请求,所述第三认证请求携带所述第一应用的令牌;根据所述第一应用的令牌,判定所述用户已登录所述第一应用;向所述网关发送第四应答,所述第四应答应用指示允许访问第一应用的受保护的页面或资源。
236.可选的,所述认证中心服务器130还包括:
237.第三访问模块,用于接收所述网关发送的对请求访问所述第二应用的访问请求进行认证的第四认证请求,所述第四认证请求携带所述第二应用的令牌;根据所述第二应用的令牌,判定所述用户已登录所述第二应用;向所述网关发送第五应答,所述第五应答应用指示允许访问第二应用的受保护的页面或资源。
238.可选的,所述认证中心服务器130还包括:
239.单点登出模块,用于接收所述网关发送的第一应用或第二应用的登出请求;所述认证中心服务器退出所述第一应用或第二应用的令牌,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,退出所述其他应用的令牌;所述认证中心服务器删除所述用户身份票据。
240.可选的,所述认证中心服务器130还包括:
241.会话同步续期模块,用于接收所述网关发送的对请求访问所述第一应用或第二应用的访问请求进行认证的第三认证请求或第四认证请求,所述第三认证请求携带所述第一应用的令牌,所述第四认证请求携带所述第二应用的令牌;所述认证中心服务器根据所述
第一应用或第二应用的令牌,判定所述用户已登录所述第一应用或第二应用;向所述网关发送第四应答或第五应答,所述第四应答应用指示允许访问所述第一应用的受保护的页面或资源;所述第五应答应用指示允许访问所述第二应用的受保护的页面或资源;为所述第一应用或第二应用的令牌续期,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,为所述其他应用的令牌续期。
242.请参考图14,本发明实施例还提供一种认证中心服务器140,包括处理器141,存储器142,存储在存储器142上并可在所述处理器141上运行的计算机程序,该计算机程序被处理器141执行时实现上述单点登录的实现方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
243.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述单点登录的实现方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
244.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
245.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
246.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

技术特征:
1.一种单点登录的实现方法,其特征在于,包括:认证中心服务器接收到浏览器或第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据;所述认证中心服务器在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;所述认证中心服务器接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求用于获取所述第二应用的令牌,所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;所述认证中心服务器根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。2.根据权利要求1所述的方法,其特征在于,所述认证中心服务器接收到浏览器或第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据包括:所述认证中心服务器接收到所述浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求之后,对所述用户登录请求中携带的用户登录名和登录密码以及所述第一应用的标识和密码进行验证,如果验证通过,向所述浏览器或所述第一应用的后端发送第二应答,所述第二应答中包括所述第一应用的令牌,用户身份票据和用户信息;所述认证中心服务器接收所述浏览器发送的第二访问请求,所述第二访问请求中携带所述用户身份票据;所述认证中心服务器设置cookie以及将cookie的目标键的值设为所述用户身份票据,并向所述浏览器发送第二重定向请求,所述第二重定向请求中携带所述第一应用的首页地址。3.根据权利要求1所述的方法,其特征在于,所述认证中心服务器接收浏览器或第一应用的后端发送的用于登录第一应用的用户登录请求之前还包括:所述认证中心服务器在接收到所述网关发送的对所述第一应用的访问请求进行认证的第二认证请求,且判定用户未登录所述第一应用之后,向所述浏览器发送拒绝访问所述第一应用的第二指示信息;所述认证中心服务器接收到所述浏览器发送的用于查询cookie的第二查询请求且查询到所述目标键不存在之后,向所述浏览器发送第三应答,所述第三应答用于指示未查询到所述目标键;所述认证中心服务器接收所述浏览器或第一应用的后端发送的第三访问请求,所述第三访问请求用于获取所述第一应用的令牌;所述认证中心服务器确定出所述第三访问请求中未携带用户身份票据,向所述浏览器发送拒绝提供所述第一应用的令牌的指示信息。4.根据权利要求1所述的方法,其特征在于,所述对所述用户登录请求验证通过之后还
包括:所述认证中心服务器接收所述网关发送的对请求访问所述第一应用的访问请求进行认证的第三认证请求,所述第三认证请求携带所述第一应用的令牌;所述认证中心服务器根据所述第一应用的令牌,判定所述用户已登录所述第一应用;所述认证中心服务器向所述网关发送第四应答,所述第四应答应用指示允许访问第一应用的受保护的页面或资源。5.根据权利要求1所述的方法,其特征在于,所述向所述浏览器发送第一重定向请求之后还包括:所述认证中心服务器接收所述网关发送的对请求访问所述第二应用的访问请求进行认证的第四认证请求,所述第四认证请求携带所述第二应用的令牌;所述认证中心服务器根据所述第二应用的令牌,判定所述用户已登录所述第二应用;所述认证中心服务器向所述网关发送第五应答,所述第五应答应用指示允许访问第二应用的受保护的页面或资源。6.根据权利要求1所述的方法,其特征在于,还包括:所述认证中心服务器接收所述网关发送的第一应用或第二应用的登出请求;所述认证中心服务器退出所述第一应用或第二应用的令牌,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,退出所述其他应用的令牌;所述认证中心服务器删除所述用户身份票据。7.根据权利要求1所述的方法,其特征在于,还包括:所述认证中心服务器接收所述网关发送的对请求访问所述第一应用或第二应用的访问请求进行认证的第三认证请求或第四认证请求,所述第三认证请求携带所述第一应用的令牌,所述第四认证请求携带所述第二应用的令牌;所述认证中心服务器根据所述第一应用或第二应用的令牌,判定所述用户已登录所述第一应用或第二应用;所述认证中心服务器向所述网关发送第四应答或第五应答,所述第四应答应用指示允许访问所述第一应用的受保护的页面或资源;所述第五应答应用指示允许访问所述第二应用的受保护的页面或资源;所述认证中心服务器为所述第一应用或第二应用的令牌续期,并查询当前是否存在其他应用的令牌,若查询到存在其他应用的令牌,为所述其他应用的令牌续期。8.一种认证中心服务器,其特征在于,包括:第一应用登录模块,用于接收到浏览器或所述第一应用的后端发送的用于登录第一应用的用户登录请求,且对所述用户登录请求验证通过之后,设置cookie以及将cookie的目标键的值设为为用户生成的用户身份票据;单点登录模块,用于在接收到网关发送的对第二应用的访问请求进行认证的第一认证请求,且判定用户未登录所述第二应用之后,向所述浏览器发送拒绝访问所述第二应用的第一指示信息;接收到所述浏览器发送的用于查询cookie的第一查询请求且查询到所述目标键已存在之后,向所述浏览器发送第一应答,所述第一应答中携带所述用户身份票据;接收所述浏览器或所述第二应用的后端发送的第一访问请求,所述第一访问请求用于获取所述第二应用的令牌,所述第一访问请求中包括所述用户身份票据,第二应用的标识和密码;所述认证中心服务器根据所述用户身份票据获取用户信息,并根据所述第二应用的标识和密码验证所述第二应用,当验证通过后,根据所述用户信息和所述第二应用的信息,生成所
述第二应用的令牌,并向所述浏览器发送第一重定向请求,所述第一重定向请求中携带所述第二应用的令牌。9.一种认证中心服务器,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至8中任一项所述的单点登录的实现方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的单点登录的实现方法的步骤。

技术总结
本发明提供一种单点登录的实现方法、认证中心服务器和存储介质,该方法包括:认证中心服务器接收到浏览器或第一应用的后端发送的第一应用的用户登录请求且验证通过后,设置cookie以及将cookie的目标健的值设为为用户生成的用户身份票据;接收到对第二应用的访问请求进行认证的认证请求,且判定用户未登录第二应用后,拒绝访问第二应用;接收到浏览器发送的cookie查询请求且查询到的目标健存在后,反馈携带用户身份票据的应答;接收浏览器或第二应用的后端发送的用于获取第二应用的令牌的访问请求;根据访问请求获取用户信息以及验证第二应用,验证通过后,生成第二应用的令牌,向浏览器发送第二应用的令牌。向浏览器发送第二应用的令牌。向浏览器发送第二应用的令牌。


技术研发人员:卞雪达
受保护的技术使用者:北京京东方技术开发有限公司
技术研发日:2023.07.28
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐