一种支持多模式的单点登录系统及方法与流程

文档序号:19741587发布日期:2020-01-18 09:04阅读:1288来源:国知局
一种支持多模式的单点登录系统及方法与流程

本发明涉及计算机技术领域,尤其涉及一种支持多模式的单点登录系统及方法。



背景技术:

登录系统是目前业界比较流行的一种企业内部相互信任的应用系统整合解决方案。通过单点登录,用户在浏览器上只需要登录一次就可以访问所有相互信任的应用系统。cas是目前比较流行的一个开源单点登录方案,它默认采用cas认证协议,通过在登录页面的cookie中存储登录凭证castgc,并在服务端存储登录生成的临时和持久票据信息。首先,默认的cas提供的客户端插件基于过滤器实现,在传统前后端集成在一起的应用中易于使用,当用户未登录或登录失效时可以通过直接在服务端重定向到登录页面。但对于前后端分离开发和部署的应用,前端和后端分开在不同的服务器上部署,前端和后端之间只通过ajax进行交互,此时后端无法重定向到登录页面。此外,票据信息的中心化存储对高并发访问条件下服务器的稳定性、可扩展性以及安全性带来了挑战。



技术实现要素:

本发明基于cas开源项目的基础上,提出了一种既支持传统应用又支持前后端分离应用的登录系统,并优化原有系统中中心化存储票据的方式,提高了系统的稳定性扩展了系统的适用场景。

本发明的技术方案为一种支持多模式的单点登录系统及方法,其中,所述系统包括客户端插件、应用系统、登录系统和缓存系统;

所述客户端插件包括前端插件和后端插件,其中前端插件为js脚本文件,在前后端分离的web应用中随前端一起部署,后端插件为jar包文件,部署在前后端集中部署的web应用和客户端应用中;

所述应用系统是接入到登录系统内的应用系统,指通过浏览器访问的web应用,包括前端网页与后台服务部署在一起的集中部署式应用和前端网页与后台服务分开部署的分布式应用,数量为一个以上;应用系统在接收到用户请求时,应用系统加载的客户端插件会拦截该请求,从请求中获取与用户对应的标志信息并判断该请求中所携带的标志信息是否合法有效,如果合法有效则请求通过;否则,应用服务器将请求重定向到登录系统的登录页面;

所述登录系统为单点登录系统,用于接收用户的登录信息并进行认证,认证成功后生成登录票据并保存;所述登录票据作为用户在应用系统的已登录凭证;所述登录系统还用于验证应用系统及浏览器发送的客户端票据及临时票据;

所述缓存系统根据存储的登录票据,与在登录系统中注册过的应用系统之间实现单点登录。

所述系统支持多种不同模式供应用系统调用,包括接口模式和插件模式;

其中,接口方式用于分布式应用的应用系统,分布式应用的应用系统直接调用接口,接口包括用户登录接口、用户退出接口、判断用户是否登录接口、获取用户信息接口和获取用户票据接口;

所述登录系统根据请求信息的内容返回相应信息或错误代码,应用系统根据错误代码进行相应操作;以登录接口为例,应用调用登录接口登录如果登录成功,则返回代码110000,如果登录失败,则返回代码110001,在接收到返回码以后,应用系统根据返回码的值执行显示具体页面或重定向到登录页的操作。

插件方式用于集中部署式应用的应用系统,所述应用系统不直接发送请求信息给登录系统,而通过所述客户端插件与登录系统交互。

在接口模式下,应用系统直接通过接口与单点登录系统交互,在插件模式下,应用系统不直接处理用户登录请求,而通过插件与单点登录系统交互;

通过在应用系统中配置,能够使应用系统运行于接口模式或者插件模式;

插件模式是应用接入的默认方式,只有在应用系统与所提供的插件不兼容或者对用户登录登请求需要进行特殊处理和独立控制时才使用接口模式;应用系统的特殊处理是指应用系统在执行登录登出等操作前后可能执行的如记录日志,操作审计,监控等行为,这些操作在单点登录插件中并不包含,因此应用系统只能通过直接调用接口的方式进行处理。

当应用运行于插件模式时,在接收到外部对应用系统的请求信息后,客户端插件判断发送请求信息的用户的登录状态,如果用户登录状态为未登录,对于分布式应用的应用系统,前端插件控制直接跳转至登录页面;对于集中部署式应用的应用系统,后端插件直接重定向到登录页面;

当应用运行于接口模式时,在接收到外部对应用系统的请求信息后,应用系统自行判断发送请求信息的用户的登录状态,如果用户登录状态为未登录,应用系统组装访问页面url及登录页面url得到登录地址,并重定向(不同的应用系统请求中标志信息的存储方式以及请求的重定向方式均不相同。对于安装于计算机操作系统的客户端应用和前后端分开部署的web应用,标志信息作为请求接口参数传递,对于前后端集中式部署的应用,标志信息通常被设置在请求的cookie中传递。

对于前后端集中部署的web应用,请求重定向的方式是客户端后端插件直接返回重定向网址访问,对于前后端集中式部署的应用,请求重定向方式是客户端前端插件从应用配置文件中读取用户登录地址进行访问)。

所述前端插件在应用系统的前端程序中加载,后端插件在应用系统的后台程序中加载;所述分布式应用的应用系统需要在前端加载前端插件,后端加载后端插件;集中部署式应用的应用系统只需要在后端加载后端插件。

根据应用系统的实际请求,能够进行客户端插件工作模式配置,选择客户端插件的工作方式为前端插件或者后端插件。

所述登录票据是用户登录信息认证成功后,单点登录系统根据用户信息生成的128位编码字符串,该字符串唯一代表了用户在单点登录系统的登录状态;

所述客户端票据是用户登录信息认证成功后,单点登录系统根据登录票据生成的32位字符串,该客户端票据与登录票据为一一对应关系;单点登录系统在登录请求返回时将该客户端票据设置在登录页面的cookie中;

所述临时票据是单点登录系统根据用户登录票据以及应用系统唯一标识生成的32位字符串,当用户向应用系统发送请求时,应用系统发送该临时票据到单点登录系统验证,无论验证是否成功,该临时票据都会失效;同时,临时票据默认过期时间为1分钟,过期也会失效;应用系统每次登录时都必须重新申请临时票据,临时票据信息保存在应用系统的服务端。

本发明还提供了一种支持多模式的单点登录方法,当应用系统是前端网页与后台服务分开部署的分布式应用系统时,所述方法包括以下步骤:

步骤a1,在登录系统配置相互信任的并需要接入登录系统的应用系统信息;所述应用系统信息为应用的唯一id,不同应用的唯一id不能冲突;应用系统信息保存在登录系统后台的配置文件中,或者保存在数据库中;

步骤a2,为应用系统配置客户端插件,选择客户端插件的工作方式为前端插件,并设置登录系统与应用系统的交互方式为接口方式;

步骤a3,当用户访问已注册应用服务器app1时,通过客户端插件进行请求判断,若应用系统中存在有效票据,则说明已登录,访问通过;如果不存在有效票据,应用服务器app1将请求重定向到登录页面;

步骤a4,用户能够选择多种登录认证方式,包括静态密码登录方式和usbkey登录方式;登录成功后,单点登录系统根据用户名生成登录票据,并保存到缓存系统中,同时在登录页面的cookie中写入登录票据id,根据登录票据和请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;临时票据也保存在缓存系统中,并设置有限的有效期限如5分钟,用户在有效期内未使用临时票据则需要重新登录申请,同时保证每一个临时票据只能被使用一次,使用过后立即删除。

步骤a5,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤a6,单点登录系统验证临时票据后,返回登录票据;

步骤a7,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

步骤a8,用户访问另一已注册应用系统app2时,由于应用服务端不存在有效票据,应用服务器app2将请求重定向到单点登录系统登录页面;

步骤a9,跳转到单点登录系统登录页面时,登录页面中的脚本自动发送请求判断是否已登录,服务端在接收到请求后,从cookie中获取票据id,并根据票据id查找票据,验证有效票据是否存在;

当票据存在时,证明已登录,单点登录系统根据票据以及请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;如果票据不存在,则直接重定向至登录页面;

步骤a10,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤a11,单点登录系统验证临时票据后,返回登录票据;

步骤a12,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

当应用系统是前端网页与后台服务部署在一起的集中部署式应用系统时,所述方法包括以下步骤:

步骤b1,在单点登录系统配置相互信任的并需要接入登录系统的应用系统信息;所述应用系统信息为应用的唯一id,不同应用的唯一id不能冲突;应用系统信息保存在登录系统后台的配置文件中,或者保存在数据库中;

步骤b2,为应用系统配置客户端插件,选择客户端插件的工作方式为后端插件,并设置登录系统与应用系统的交互方式为插件方式;

步骤b3,当用户访问已注册应用服务器app1时,通过客户端插件进行请求判断,若应用系统中已存在有效票据,则说明已登录,访问通过;如果不存在有效票据,应用服务器返回重定向请求,并通过客户端插件根据请求内容拼接重定向链接地址,并进行跳转;

步骤b4,用户能够选择多种登录认证方式,包括静态密码登录方式和usbkey登录方式,登录成功后,单点登录系统根据用户名生成登录票据,并保存到缓存系统中,同时在登录页面的cookie中写入登录票据id,根据登录票据和请求来源应用生成临时票据,并将临时票据添加到应用系统的请求url中并跳转;

步骤b5,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤b6,单点登录系统验证临时票据后,返回登录票据;

步骤b7,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

步骤b8,用户访问另一已注册应用系统app2时,由于应用服务端不存在有效票据,应用服务器将请求重定向到单点登录系统登录页面;

步骤b9,跳转到单点登录系统登录页面时,登录页面中的脚本自动发送请求判断是否已登录,单点登录系统在接收到请求后,从cookie中获取票据id,并根据票据id查找票据,验证有效票据是否存在;

当票据存在时,证明已登录,单点登录系统根据票据以及请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;如果票据不存在,则直接重定向至登录页面;

步骤b10,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤b11,单点登录系统验证临时票据后,返回登录票据;

步骤b12,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过。

有益效果:本发明基于单点登录技术基本原理结合应用集成的实际情况,开发了一种支持多模式的单点登录系统及方法。实际工程应用中需要集成单点登录功能的应用可能有多种不同的情况。有些应用基于标准的servlet开发规范开发,则可以通过直接加载单点登录插件的方式实现无侵入性接入,无需修改业务代码。有些应用基于前后端分离的开发模式,则可以在前端和后端分别加载插件实现单点登录功能接入。有些应用使用c++或者php等非java语言开发,无法直接加载插件,则可以通过实现接口的方式进行单点登录功能接入。本发明提供的单点登录插件及接口能够适配以上多种不同模式的应用接入,在实际工程中产生了有益的效果。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。

图1本发明所述实例的单点登录方法流程图;

图2是本发明系统架构图。

图3为本发明实施例提供的一种部署示意图。

具体实施方式

以下结合附图和实例详细说明本发明技术方案。所描述的实施例仅是本发明的一部分实施例,而不是全部实施例。如图1和图2所示,现结合本文所述的一种支持多模式的单点登录方法的场景,以体现本文所述方法具有一定的适应性与通用性。

场景一:登录系统需要接入的客户端应用采用前后端集中式部署。其所述具体步骤如下:

步骤1,在所述登录系统服务端配置相互信任的并需要接入登录系统的应用系统信息;

步骤2,为所述应用系统配置客户端插件,并为应用设置模式为普通模式;进行步骤3;

步骤3,当用户访问已注册应用服务器app1时,通过客户端插件进行请求判断,若应用服务端已存在有效票据,则说明已登录,访问通过;如果没有,应用服务器将请求重定向到单点登录系统登录页面。

步骤4,可选地,用户可选择多种登录认证方式,如静态密码登录方式,usbkey登录方式等。登录成功后,单点登录系统根据用户名生成登录票据,并保存到缓存系统中。在该页面的cookie中写入登录票据id。同时根据登录票据和请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;

步骤5,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤6,单点登录系统验证临时票据后,返回登录票据。

步骤7,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

步骤8,用户访问另一已注册应用系统app2时,由于应用服务端不存在有效票据,应用服务器将请求重定向到单点登录系统登录页面;

步骤9,跳转到单点登录系统登录页面时,自动发送请求判断是否已登录。服务端在接收到请求后,从cookie中获取票据id,并根据票据id查找票据,验证有效票据是否存在;

步骤10,当票据存在时,证明已登录,服务端根据票据以及请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;

步骤11,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤12,单点登录系统验证临时票据后,返回登录票据;

步骤13,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

场景二:登录系统需要接入的客户端应用采用前后端分离式部署。其所述具体步骤如下:

步骤1,在所述登录系统服务端配置相互信任的并需要接入登录系统的应用系统信息;

步骤2,为所述应用系统配置客户端插件,并为应用设置模式为接口模式;进行步骤3;

步骤3,当用户访问已注册应用服务器app1时,通过客户端插件进行请求判断,若应用服务端已存在有效票据,则说明已登录,访问通过;如果没有,应用服务器返回重定向请求,并通过客户端插件根据请求内容拼接重定向链接地址,并进行跳转。

步骤4,可选地,用户可选择多种登录认证方式,如静态密码登录方式,usbkey登录方式等。登录成功后,单点登录系统根据用户名生成登录票据,并保存到缓存系统中。在该页面的cookie中写入登录票据id。同时根据登录票据和请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;

步骤5,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤6,单点登录系统验证临时票据后,返回登录票据。

步骤7,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过;

步骤8,用户访问另一已注册应用系统app2时,由于应用服务端不存在有效票据,应用服务器将请求重定向到单点登录系统登录页面;

步骤9,跳转到单点登录系统登录页面时,自动发送请求判断是否已登录。服务端在接收到请求后,从cookie中获取票据id,并根据票据id查找票据,验证有效票据是否存在;

步骤10,当票据存在时,证明已登录,服务端根据票据以及请求来源应用生成临时票据,并将该临时票据添加到应用系统的请求url中并跳转;

步骤11,应用系统接收到包含有临时票据的请求后,从请求链接中提取临时票据并发送至单点登录系统验证;

步骤12,单点登录系统验证临时票据后,返回登录票据;

步骤13,应用系统接收登录票据,并重定向到原始请求链接,此时由于应用系统中存在有效票据,请求通过。

实施例

图3为本发明实施例提供的一种部署示意图。结合图3,包括:前后端分离部署的应用a,其id为123456,前端部署在nginx服务器中,后端部署在tomcat服务器中。单点登录服务器,部署了单点登录程序,票据缓存系统,采用redis存储登录产生的票据信息。

在部署时,应用前端程序中加载单点登录前端插件,该插件为js文件,用于拦截用户请求,判断是否登录,及重定向至登录页面。应用后端程序中加载单点登录后端插件,该插件为jar文件,用于验证请求中携带票据是否正确。单点登录系统的配置文件中添加配置应用id为123456,以允许该应用进行登录认证。

本发明实施例提供了一种前后端分离部署的应用接入单点登录系统的实例,采用这种方式,用户的登录登出请求由单点登录前端插件和后端插件进行拦截和处理,不需要应用程序修改代码与单点登录服务器交互进行逻辑校验,实现了应用的无侵入性集成单点登录功能。

本发明提供了一种支持多模式的单点登录系统及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1