CN112035822A - 多应用单点登录方法、装置、设备及存储介质 - Google Patents
多应用单点登录方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112035822A CN112035822A CN202010865388.7A CN202010865388A CN112035822A CN 112035822 A CN112035822 A CN 112035822A CN 202010865388 A CN202010865388 A CN 202010865388A CN 112035822 A CN112035822 A CN 112035822A
- Authority
- CN
- China
- Prior art keywords
- login
- jwt
- client
- session
- information
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012795 verification Methods 0.000 claims abstract description 97
- 230000004044 response Effects 0.000 claims abstract description 60
- 238000013475 authorization Methods 0.000 claims description 44
- 230000004083 survival effect Effects 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 12
- 230000004048 modification Effects 0.000 abstract description 5
- 238000012986 modification Methods 0.000 abstract description 5
- 230000000875 corresponding effect Effects 0.000 description 63
- 238000007726 management method Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/41—User authentication where a single sign-on provides access to a plurality of computers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种多应用单点登录方法、装置、设备及存储介质。该方法包括:响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。本发明实施例提供的方法通过将会话标识与JWT关联存储,实现了基于会话标识进行登录校验,可以兼容不同会话管理模式下的单点登录流,减少了业务流程上的修改,提高了框架的灵活性和兼容性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种多应用单点登录方法、装置、设备及存储介质。
背景技术
单点登录(Single Sign On,SSO),是指在多个应用系统中,用户只需要登录一次就可以访问多个应用。
JWT(JSON Web Token)是目前常用单点登录方案,JWT的原则是在服务器身份验证之后,将生成一个JSON对象,并发送返回用户。用户收到令牌信息后,以后每次请求都带上令牌信息作为身份验证信息,服务端在收到用户请求后,从请求头中获取令牌并校验其合法性,由此完成身份认证的过程。
然而,目前基于JWT令牌认证的框架业务扩展能力不强,不能灵活适应现场业务的变更,难以兼容旧系统的单点登录业务,框架兼容性不强。因此,需要提出一种可以灵活配置、兼容在其它管理模式下的单点登录方法。
发明内容
本发明提供一种多应用单点登录方法、装置、设备及存储介质,以实现灵活适应业务的变更,兼容不同模式的单点登录业务。
第一方面,本发明实施例提供了一种多应用单点登录方法,包括:
响应于接收到的登录校验请求,获取登录校验请求中的会话标识;
获取与会话标识对应的javaScrip对象简谱网络令牌JWT;
对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
第二方面,本发明实施例还提供了一种多应用单点登录装置,包括:
会话标识获取模块,用于响应于接收到的登录校验请求,获取登录校验请求中的会话标识;
网络令牌获取模块,用于获取与会话标识对应的javaScrip对象简谱网络令牌JWT;
网络令牌校验模块,用于对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
第三方面,本发明实施例还提供了一种计算机设备,设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如本发明实施例提供的多应用单点登录方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的多应用单点登录方法。
本发明实施例中提供的多应用单点登录方法,响应于接收到的登录校验请求,获取登录校验请求中的会话标识,并获取与该会话标识对应的javaScrip对象简谱网络令牌JWT,对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。通过采用上述方案,通过将会话标识与JWT关联存储,实现了基于会话标识进行登录校验,可以兼容依靠会话管理模式下的单点登录流,减少了业务流程上的修改,提高了框架的灵活性和兼容性。也使得用户无需变更操作习惯,提高了用户体验。
附图说明
图1是本发明实施例一提供的一种多应用单点登录方法的流程图;
图2是本发明实施例二提供的一种多应用单点登录方法的流程图;
图3是本发明实施例三提供的一种多应用单点登录方法的流程图;
图4是本发明实施例四提供的另一种多应用单点登录方法的流程图;
图5是本发明实施例五提供的一种多应用单点登录装置的流程图;
图6是本发明实施例六提供的计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种多应用单点登录方法的流程图,本实施例可适用于实现多应用单点登录的情形。该方法可以由多应用单点登录装置执行,该装置可以由硬件和/或软件来实现,例如,该多应用单点登录装置可配置于计算机设备中。如图1所示,该方法具体包括如下步骤:
步骤S110、响应于接收到的登录校验请求,获取登录校验请求中的会话标识。
在本实施例中,登录校验请求是由客户端发起的,用于使服务端进行单点登录的登录校验的请求。可选的,登录校验请求中包含发起登录校验请求的客户端的客户端标识、请求登录的系统地址和会话标识(session ID)。其中,每个会话标识有着其对应的会话(session),用来识别客户端与服务端之间交互过程的会话。可选的,客户端是指与服务端相对应,为用户提供本地服务的程序,一般安装于终端(如移动终端等)上,客户端需要与服务端互相配合运行;服务端是指为客户端服务的软件程序和数据集合。可以理解的是,本实施例提供的方法由服务端执行。在服务端中,会话session用于服务端状态管理,使用会话session之后,每个客户端都可以将实际的数据保存在服务端上,对于每个客户端的数据,将会生成一个对应的唯一的会话标识,保存在客户端。客户端与服务端通过上述会话标识确认客户端的身份,通常称该会话标识为session ID。
可选地,客户端与服务端首次成功建立连接时,服务端根据登录信息生成会话session和对应的JWT,将会话标识session ID及对应的JWT返回至客户端,客户端将JWT存储至本地cookie中,以使客户端再次发起登录校验请求时,将JWT添加至登录验证请求中,服务端在接收到客户端再次发起的登录校验请求时,对登录校验请求中包含的JWT直接进行校验,无需获取登录校验请求中的会话标识。
在本实施例中,为兼容不同管理模式下的单点登录,当客户端向服务端发送登录校验请求时,可以不用将令牌添加至登录校验请求中,而是会在登录校验请求中携带session ID,服务器接收到客户端发送的登录校验请求后,根据登录校验请求中的sessionID查询相应的session,并根据session获取缓存数据库中存储的令牌,基于获取的令牌信息进行登录校验请求的响应。需要注意的是,一个session的概念需要包括特定的客户端,特定的服务端以及不中断的操作时间。示例性的,用户A通过客户端和服务端C建立连接时的session与用户B通过客户端和服务端C建立连接时的session不同,相应的,用户A在客户端中存储的session ID和用户B在客户端中存储的session ID也不同。
在上述方案的基础上,若登录校验请求中未携带会话标识,则表明客户端是首次发起登录校验请求,需要服务端创建一个新的会话并生成其对应的会话标识。
在本发明的一种实施方式中,所述登录校验请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识不匹配时生成的。优选的,可以在客户端内预先设置免校验应用的应用标识,客户端在检测到用户发起的登录操作后,将登录操作关联的登录程序标识与预先设置的免校验应用标识进行匹配,当登录程序标识与免校验应用标识匹配失败时,表明用户发起的登录操作关联的应用程序不是免校验的应用程序,则生成指示服务端进行校验的登录校验请求发送至服务端,服务端根据接收到的登录校验请求进行登录校验。可选的,免校验应用标识可以通过添加客户端配置项实现。
步骤S120、获取与会话标识对应的javaScrip对象简谱网络令牌JWT。
在本实例中,将session ID和与其对应的JWT存储在服务端中,当服务端获取到登录校验请求中的session ID后,基于获取的session ID确定相应的令牌。其中,JWT是为了在网络应用环境间传递声明而执行的一种基于JSON(Json web token)的开放标准,特别适用于分布式站点的单点登录(SSO)场景,一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。JWT是服务端在对客户端发起首次登录校验请求时发送的用户账号密码认证通过后生成的,JWT的生成可参见现有技术中JWT的生成方式,在此不再赘述。
示例性的,客户端A和服务端首次成功建立连接时,服务端根据登录信息生成会话session-A和对应的JWT-A,以及session-A对应的会话标识session ID-A,将session-A、session ID-A和对应的JWT-A进行存储,并将会话标识session ID-A返回至客户端,以使客户端再次发起登录校验请求时,将session ID-A添加至登录验证请求中。可选的,将session-A、session ID-A和对应的JWT-A进行存储可以为:将会话标识session ID-A与会话session-A对应存储,和/或将会话标识session ID-A与JWT-A对应存储。例如可以将session ID-A与会话session-A对应存储至session中,将会话标识session ID-A与JWT-A对应存储至数据库redis中。在接收到客户端再次发起的登录校验请求时,根据登录校验请求中包含的session ID从session和/或redis中获取对应的JWT。
在本发明的一种实施方式中,获取与会话标识对应的javaScrip对象简谱网络令牌JWT,包括:根据会话标识确定会话标识对应的会话,从会话中获取与会话标识对应的JWT;当会话中不存在与会话标识对应的JWT时,从数据库中获取与会话标识对应的JWT。具体地,会话标识以及与会话标识对应的JWT存储于会话session和数据库redis中。示例性的,服务端在接收到客户端发送的登录校验请求后,获取登录校验请求中的会话标识session ID,并确定会话标识session ID对应的会话session,从会话session中获取与会话标识session ID对应的JWT,当会话session中不存在与会话标识session ID对应的JWT时,从数据库redis中获取与会话标识session ID对应的JWT。将JWT存储于数据库redis中,采用数据库redis存储JWT和管理JWT生命周期,可以实现服务器的主从同步,数据库redis中JWT可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器,使得JWT的存储更加灵活。
步骤S130、对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
在本实施例中,服务端在获取到与会话标识对应的javaScrip对象简谱网络令牌JWT之后,对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。可选的,可以基于Apache shiro框架对JWT进行校验,根据校验结果生成登录响应信息。具体的,可以通过Apache shiro验证登陆用户的身份,或对用户访问权限进行控制和登陆的认证,shiro可以响应认证、访问控制,或者session生命周期中发生的事件,shiro可以在任何应用程序环境中工作。基于shiro框架对JWT进行校验,使得与许多其它框架和应用程序集成更为方便。登录响应信息为服务端根据JWT校验结果所生成,可以理解的是,校验结果可以具体划分为校验通过和校验失败。当校验结果为校验通过时,可以生成包含JWT的登录响应信息发送至客户端,以使客户端根据登录响应信息中的JWT进行登录;当校验结果为校验失败时,可以生成表征请求失败的登录响应信息发送至客户端,以使客户端根据登录响应信息确定请求失败。
一个实施方式中,在根据校验结果生成登录响应信息后,可以采用通用的rest接口协议将登录响应信息发送至客户端,采用rest接口协议进行信息传输可以在各个业务流中很方便的获取JWT及用户登录账号密码等信息。
本实施例的技术方案,通过响应于接收到的登录校验请求,获取登录校验请求中的会话标识,获取与会话标识对应的javaScrip对象简谱网络令牌JWT,并对JWT进行校验,根据校验结果生成登录响应信息发送至客户端。通过将会话标识与JWT关联存储,实现了基于会话标识进行登录校验,可以兼容不同会话管理模式下的单点登录流,减少了业务流程上的修改,提高了框架的灵活性和兼容性,使得用户的操作习惯也无需变更。
在上述方案的基础上,还包括:响应于接收到的登录放行请求,生成登录响应信息发送至客户端,其中,登录放行请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识相匹配时生成的。可选的,当客户端在检测到用户发起的登录操作时,将登录操作关联的登录程序标识与预先设置的免校验应用标识进行匹配,当登录程序标识与免校验应用标识匹配成功时,表明用户发起的登录操作关联的应用程序为免校验的应用程序,则生成指示服务端进行放行的登录放行请求发送至服务端,服务端根据接收到的登录放行请求进行登录放行。减轻了服务端的校验处理量,减少了用户的等待时间。
实施例二
图2为本发明实施例提供的一种多应用单点登录方法的流程图,本实施例在上述方案的基础上,将未获取到与会话标识对应的JWT时的操作进行了具体化。如图2所示,该方法具体包括如下步骤:
步骤S210、响应于接收到的登录校验请求,获取登录校验请求中的会话标识。
步骤S220、根据会话标识确定会话标识对应的会话,从会话中获取与会话标识对应的JWT,当会话和数据库中均不存在与会话标识对应的JWT时,生成手动登录指令发送至客户端。
在本实施例中,当会话和数据库中均不存在与会话标识对应的JWT时,表明服务端的会话和数据库中均未存储JWT。也就是说,客户端发起的登录校验请求为首次登录校验请求或之前发送的登录校验请求校验失败。在此基础上,服务端生成手动登录指令发送至客户端,以使得客户端在接收到该手动登录指令后向用户展示手动登录界面,并接收用户在登录界面输入的手动登录信息(如账号密码信息等),将用户输入的手动登录信息发送至服务端,以使服务端根据接收到的手动登录信息进行登录响应。
步骤S230、接收客户端发送的手动登录信息,对手动登录信息进行校验。
服务端接收到客户端发动的手动登录信息后,基于shiro安全框架对手动登录信息进行校验。可选的,校验方式可包括账号密码校验、登录模式校验、应用注册校验等。具体的,对手动登录信息进行校验的方式可参照现有技术中登录信息的校验方式,在此不再赘述。
步骤S240、若校验通过,则生成会话标识对应的JWT,将JWT存储于会话与数据库中,并生成授权登录信息发送至客户端。
当校验通过时,根据登录信息生成会话标识对应的JWT,将JWT存储于会话与数据库中,并生成授权登录信息发送至客户端。可选的,可以采用数据库mysql存储和管理用户账号密码等信息。
在上述方案的基础上,若校验通过,还包括:将JWT存储到rockermq中,以实现多个应用的令牌同步。
一个实施例中,生成授权登录信息发送至客户端,包括:生成包含JWT的授权登录信息发送至客户端,以使客户端根据解密工具类获取授权登录信息中JWT的有效载荷信息,并基于有效载荷信息执行登录操作。其中,发送至客户端的授权登录信息中包括了JWT,客户端内预先设置的解密工具类可以使客户端解密有效载荷信息,以使客户端直接根据有效载荷信息判断是否有应用内的某些访问权限,并根据访问权限执行相应的登录操作。可选的,执行登录操作可以为:在具备应用内的某些访问权限时,客户端对具备访问权限的访问请求直接放行,不用再向服务端发出登录校验请求。在上述过程中,客户端使用无秘钥解密工具类取授权登录信息中JWT的有效载荷信息,使得无需服务端向客户端传输秘钥即可获取有效载荷信息,进而使得秘钥只保存在服务器中,避免秘钥传输时可能导致的泄露风险。
由上述可知,在获取到登录校验请求中的会话标识之后,当会话和数据库中均不存在与会话标识对应的JWT时,生成手动登录指令发送至客户端;接收客户端发送的手动登录信息,对手动登录信息进行校验;若校验通过,则生成会话标识对应的JWT,将JWT存储于会话与数据库中,并生成授权登录信息发送至客户端。通过将JWT存储于会话session和数据库的方式,JWT可以从主服务器向从服务器上同步,使得在接收到客户端再次发送的登录校验请求时,每个服务器均可通过数据库查询到JWT,适用于服务器群集或面向服务的跨域体系结构,减轻了服务端的数据处理量,提高了服务端的处理速度。
实施例三
图3为本发明实施例提供的一种多应用单点登录方法的流程图,本实施例在上述实施例的基础上进行了进一步优化。如图3所示,该方法具体包括如下步骤:
S310、响应于接收到的登录校验请求,获取登录校验请求中的会话标识。
S320、获取与会话标识对应的javaScrip对象简谱网络令牌JWT。
S330、依次对JWT的有效载荷信息、存活时间以及更新时间进行校验。
在本实施例中,获取JWT后,对JWT进行解析,获得JWT的有效载荷信息、存活时间以及更新时间,并依次对有效载荷信息、存活时间以及更新时间进行校验。其中,有效载荷信息是所述JWT的主题内容部分,为一个JSON对象,携带了需要传递的数据,包括发行人、到期时间、主题、用户、发布的时间等字段信息。存活时间和更新时间可以根据实际需求由服务端进行设置,在此不再限定。示例性的,可以将存活时间设置为15天,将更新时间设置为30分钟。
一个实施例中,依次对JWT的有效载荷信息、存活时间以及更新时间进行校验为:当有效载荷信息校验通过时,对存活时间进行校验,当存活时间校验通过时,对更新时间进行校验,当更新时间校验通过时,判定有效载荷信息、存活时间以及更新时间均校验通过。可选的,对存活时间进行校验可以为:获取客户端前次登录的前次登录日期,判断前次登录日期至当前日期是否超过存活时间,若不超过存活时间,则判定存活时间校验通过,否则,判定存活时间校验失败。对更新时间进行校验可以为:判断JWT是否超过更新时间,若未超过更新时间,则判定更新时间校验通过,否则,判定更新时间校验失败。
S340、当有效载荷信息、存活时间以及更新时间均校验通过时,生成授权登录信息发送至客户端。
当有效载荷信息、存活时间以及更新时间均校验通过时,JWT校验通过,服务端生成授权登录信息发送至客户端。
S350、当有效载荷或存活时间校验失败时,生成手动登录指令作为登录响应信息发送至客户端。
可选的,若有效载荷信息中的用户信息校验不通过,即用户不具备权限时,生成手动登录指令作为登录响应信息发送至客户端,以使客户端根据手动登录指令指示用户输入账号密码信息,并将用户输入的账号密码信息发送到服务端进行校验。当有效载荷信息通过校验时,对存活时间进行校验,当存活时间校验失败时,生成手动登录指令作为登录响应信息发送至客户端,以使客户端根据该手动登录指令指示用户输入账号密码信息,并将用户输入的账号密码信息发送到服务端进行校验。
需要说明的是,有效载荷和存活时间的校验不分先后,可以是先校验存活时间,再校验有效载荷信息,也可以是先校验有效载荷,再校验存活时间,当有效载荷信息和存活时间之一存在校验不通过时,均则生成手动登录指令作为登录响应信息发送至客户端,以使客户端根据该手动登录指令指示用户输入账号密码信息,并将用户输入的账号密码信息发送到服务端进行校验;当有效载荷信息和存活时间均校验通过时,对更新时间进行校验。
S360、当更新时间校验失败时,生成会话标识对应的更新令牌,基于更新令牌更新会话和数据库中的JWT,并生成授权登录信息发送至客户端。
可选的,当有效载荷或存活时间校验通过后,对更新时间进行校验。示例性的,假设存活时间设置为15天,更新时间设置为30分钟,上一次登录日期距此次登录日期的间隔为2天,则上一次登录日期距此次登录日期的间隔不超过存活时间,但超过了更新时间,即存活时间校验通过,但更新时间校验失败,则生成会话标识对应的更新令牌,基于更新令牌更新会话和数据库中的JWT,并生成授权登录信息发送至客户端。优选的,可以基于shiro框架生成会话标识对应的更新令牌,基于更新令牌更新会话和数据库中的JWT。
在上述方案的基础上,生成授权登录信息发送至客户端,包括:生成包含JWT的授权登录信息发送至客户端,以使客户端根据解密工具类获取授权登录信息中JWT的有效载荷信息,并基于有效载荷信息执行登录操作。可选的,客户端通过预先设置的解密工具类解密有效载荷信息,并根据有效载荷信息判断是否有应用内的某些访问权限,并根据访问权限执行相应的登录操作。使得无需服务端向客户端传输秘钥即可获取有效载荷信息,进而使得秘钥只保存在服务器中,避免秘钥传输时可能导致的泄露风险。
本实施例提供的多应用单点登录方法,通过对JWT的有效载荷信息、存活时间以及更新时间进行校验,根据校验结果生成不同的登录响应信息发送至客户端,实现了服务端对JWT的权限验证及更新。
实施例四
图4为本发明实施例提供的一种多应用单点登录方法的流程图。本实施例在上述实施例的基础上,提供了一种优选实施例。如图4所示,该方法具体包括如下步骤:
步骤S401、客户端响应于检测到的登录操作,根据预先配置的单点登录过滤器对登录操作关联的登录程序标识进行拦截。
在本实施例中,单点登录过滤器可以预先设置。示例性的,以客户端采用传统ssm框架为例。首先添加客户端jar包,一般将客户端jar包命名为com.run.jwt-client-xxx.jar,其中xxx为jar包版本号。然后配置单点登录过滤器,找到项目根目录下/WEB-INFO/web.xml文件,在文件如下位置添加配置:配置应用首页地址匹配的URL、单点登录地址(ip:port)、白名单地址、免校验应用标识等信息,即可基本完成客户端的集成工作。当客户端为其他类型的开发框架时,可执行类似等效操作即可。
当客户端检测到用户发起的登录操作时,判断登录操作关联的登录程序标识是否在预先配置的白名单内(或是否为预先配置的免校验应用标识)。当登录操作关联的登录程序标识在预先配置的白名单内时,判定登录操作关联的登录程序为免校验程序,当录操作关联的登录程序标识不在预先配置的白名单内时,判定登录操作关联的登录程序为需要校验的程序。
步骤S402、客户端在登录操作关联的登录程序标识在单点登录过滤器的白名单内时,生成登录放行请求发送至服务端。
步骤S403、服务端接收登录放行请求,生成登录响应信息发送至客户端。
步骤S404、客户端在登录操作关联的登录程序标识不在单点登录过滤器的白名单内时,生成登录校验请求发送至服务端。
步骤S405、服务端接收到登录校验请求,获取登录校验请求中的会话标识,判断是否存在与会话标识对应的javaScrip对象简谱网络令牌JWT。
可选的,判断是否存在与会话标识对应的JWT可以为:分别在session和redis中判断是否存在与会话标识对应的JWT。更加详细的技术方案可参见上述实施例,在此不再赘述。
步骤S406、当存在与服务端与会话标识对应的JWT时,依次对JWT的有效载荷信息、存活时间以及更新时间进行校验。
步骤S407、服务端在有效载荷信息、存活时间以及更新时间均校验通过时,生成授权登录信息发送至客户端。
步骤S408、服务端在有效载荷或存活时间校验失败时,判断登录校验请求是否为AJAX请求,若是,返回请求失败提示信息至客户端;若否,生成手动登录指令作为登录响应信息发送至客户端。
步骤S409、服务端在更新时间校验失败时,生成会话标识对应的更新令牌,基于更新令牌更新会话和数据库中的JWT,并生成授权登录信息发送至客户端。
可选的,服务端采用通用的rest接口协议将登录响应信息发送至客户端,采用rest接口协议进行信息传输可以在各个业务流中很方便的获取JWT及用户登录账号密码等信息。
步骤S410、客户端接收服务端发送的授权登录信息,使用预先设置的令牌有效载荷工具类获取授权登录信息中JWT的有效载荷信息,基于有效载荷信息执行登录操作。
步骤S411、当服务端不存在与会话标识对应的JWT时,判断登录校验请求是否为AJAX请求,若是,返回请求失败提示信息至客户端;若否,生成手动登录指令作为登录响应信息发送至客户端。
步骤S412、客户端接收服务端发送的手动登录指令,根据手动登录指令生成手动登录页面并展示,获取用户在手动登录界面输入的手动登录信息,将手动登录信息发送至服务端。
步骤S413、服务端对接收到的手动登录信息进行校验,并在校验通过时,生成会话标识对应的JWT,将JWT存储于会话与所述数据库中,并生成授权登录信息发送至客户端。
可选的,在将JWT存储于会话与所述数据库之后,还包括:将JWT发送至rocketmq中。
在本实施例中,将单点登录认证的整体分成两个部分:认证服务端部分和客户端部分。通过服务端部分负责完成用户登录校验,令牌生成,令牌加密/解密,令牌续期/失效、令牌关联存储、权限验证等操作,并结合shiro安全认证机制和权限控制实现对资源的访问控制逻辑。通过客户端部分负责完成接收服务端令牌、拦截请求加入令牌信息、安全解密、获取令牌有效载荷信息并传递给用户端的操作,实现用户的便捷接入和安全控制。本实施例客户端与服务端功能相对隔离,可采用不同代码版本客户端,适应各种场景客户端框架。并在客户端内设置了令牌有效载荷工具类。使得客户端无秘钥即可解密令牌,避免秘钥泄露风险。基于shiro框架的实现使得应用集成方便快捷,无需修改应用业务逻辑或只需要进行非常少量的修改便可实现集成。采用通用的rest接口协议进行客户端与服务端之间的数据传输,使得在各个业务流中可以很方便的获取令牌及用户信息,灵活的适应各业务场景的需求变更要求,提高了各业务场景的扩展能力。采用session ID与令牌关联的存储令牌方式,可以兼容依靠session管理模式下的单点登录的登录流,相对于现有技术中采用session管理模式的单点登录应用可以进行平滑的切换现本登录模式而无需做业务流程上的修改,用户的操作习惯也无需变更。提供令牌签发工具类,提供丰富的令牌签发方式,适应不同场景下的令牌签发需求,在服务端可灵活高效的修改令牌的载荷。
实施例五
图5为本发明实施例提供的一种多应用单点登录装置的流程图,该装置可由软件和/或硬件实现,一般集成在计算机设备中,可通过执行计算机设备的多应用单点登录方法实现单点登录。如图5所示,该装置包括:会话标识获取模块510、网络令牌获取模块520和网络令牌校验模块530。
会话标识获取模块510,用于响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;
网络令牌获取模块520,用于获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;
网络令牌校验模块530,用于对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
本发明实施例所提供的多应用单点登录装置,首先,会话标识获取模块510响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;其次,网络令牌获取模块520获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;最后,网络令牌校验模块530对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。本申请实施例通过将会话标识与JWT关联存储,实现了基于会话标识进行登录校验,可以兼容不同会话管理模式下的单点登录流,减少了业务流程上的修改,提高了框架的灵活性和兼容性,用户的操作习惯也无需变更。
进一步的,会话标识获取模块510用于响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识,其中,所述登录校验请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识不匹配时生成的。
进一步的,网络令牌获取模块520还用于根据所述会话标识确定所述会话标识对应的会话,从所述会话中获取与所述会话标识对应的JWT;
当所述会话中不存在与所述会话标识对应的JWT时,从数据库中获取与所述会话标识对应的JWT;
当所述会话和所述数据库中均不存在与所述会话标识对应的JWT时,生成手动登录指令发送至客户端;
接收客户端发送的手动登录信息,对所述手动登录信息进行校验。
进一步的,网络令牌校验模块530还用于依次对所述JWT的有效载荷信息、存活时间以及更新时间进行校验;
当所述有效载荷信息、所述存活时间以及所述更新时间均校验通过时,生成授权登录信息发送至客户端;
当所述有效载荷或所述存活时间校验失败时,生成手动登录指令作为所述登录响应信息发送至客户端;
当所述更新时间校验失败时,生成所述会话标识对应的更新令牌,基于所述更新令牌更新所述会话和所述数据库中的所述JWT,并生成授权登录信息发送至客户端;
其中,所述生成授权登录信息发送至客户端,包括:生成包含所述JWT的授权登录信息发送至客户端,以使客户端根据解密工具类获取所述授权登录信息中所述JWT的有效载荷信息,并基于所述有效载荷信息执行登录操作。
进一步的,上述装置还包括:
免校验模块:用于响应于接收到的登录放行请求,生成登录响应信息发送至客户端,其中,所述登录放行请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识相匹配时生成的。
上述装置可执行本发明前述所有实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请前述所有实施例所提供的方法。
实施例六
图6为本发明实施例提供的计算机设备的结构示意图,如图6所示,该设备包括处理器601、存储器602、输入装置603和输出装置604;设备中处理器601的数量可以是一个或多个,图6中以一个处理器602为例;设备中的处理器601、存储器602、输入装置603和输出装置604可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器602作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的多应用单点登录方法对应的程序指令/模块(例如,多应用单点登录装置中的会话标识获取模块510、网络令牌获取模块520和网络令牌校验模块530)。处理器601通过运行存储在存储器602中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的多应用单点登录方法。
存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器602可进一步包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置603可用于接收输入的数字或字符信息,以及产生与设备/终端/服务器的用户设置以及功能控制有关的键信号输入。输出装置604可包括显示屏等显示设备。
实施例七
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种多应用单点登录方法,该方法包括:
响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;
获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;
对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的应用推荐操作,还可以执行本申请任意实施例所提供的多应用单点登录方法中的相关操作。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种多应用单点登录方法,其特征在于,包括:
响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;
获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;
对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
2.根据权利要求1所述的方法,其特征在于,所述获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT,包括:
根据所述会话标识确定所述会话标识对应的会话,从所述会话中获取与所述会话标识对应的JWT;
当所述会话中不存在与所述会话标识对应的JWT时,从数据库中获取与所述会话标识对应的JWT。
3.根据权利要求2所述的方法,其特征在于,还包括:
当所述会话和所述数据库中均不存在与所述会话标识对应的JWT时,生成手动登录指令发送至客户端;
接收客户端发送的手动登录信息,对所述手动登录信息进行校验;
若校验通过,则生成所述会话标识对应的JWT,将所述JWT存储于所述会话与所述数据库中,并生成授权登录信息发送至客户端。
4.根据权利要求2所述的方法,其特征在于,所述对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端,包括:
依次对所述JWT的有效载荷信息、存活时间以及更新时间进行校验;
当所述有效载荷信息、所述存活时间以及所述更新时间均校验通过时,生成授权登录信息发送至客户端。
5.根据权利要求3-4任一所述的方法,其特征在于,所述生成授权登录信息发送至客户端,包括:
生成包含所述JWT的授权登录信息发送至客户端,以使客户端根据解密工具类获取所述授权登录信息中所述JWT的有效载荷信息,并基于所述有效载荷信息执行登录操作。
6.根据权利要求1所述的方法,其特征在于,所述登录校验请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识不匹配时生成的。
7.根据权利要求1所述的方法,其特征在于,还包括:
响应于接收到的登录放行请求,生成登录响应信息发送至客户端,其中,所述登录放行请求是客户端在检测到的登录操作关联的登录程序标识与免校验应用标识相匹配时生成的。
8.一种多应用单点登录装置,其特征在于,包括:
会话标识获取模块,用于响应于接收到的登录校验请求,获取所述登录校验请求中的会话标识;
网络令牌获取模块,用于获取与所述会话标识对应的javaScrip对象简谱网络令牌JWT;
网络令牌校验模块,用于对所述JWT进行校验,根据校验结果生成登录响应信息发送至客户端。
9.一种计算机设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的多应用单点登录方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的多应用单点登录方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865388.7A CN112035822B (zh) | 2020-08-25 | 2020-08-25 | 多应用单点登录方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865388.7A CN112035822B (zh) | 2020-08-25 | 2020-08-25 | 多应用单点登录方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035822A true CN112035822A (zh) | 2020-12-04 |
CN112035822B CN112035822B (zh) | 2024-08-06 |
Family
ID=73581540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865388.7A Active CN112035822B (zh) | 2020-08-25 | 2020-08-25 | 多应用单点登录方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035822B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597472A (zh) * | 2021-03-03 | 2021-04-02 | 北京视界云天科技有限公司 | 单点登录方法、装置及存储介质 |
CN112699404A (zh) * | 2020-12-29 | 2021-04-23 | 平安普惠企业管理有限公司 | 一种校验权限的方法、装置、设备及存储介质 |
CN112765583A (zh) * | 2021-01-27 | 2021-05-07 | 海尔数字科技(青岛)有限公司 | 一种单点登录方法、装置、设备及介质 |
CN112861092A (zh) * | 2021-03-10 | 2021-05-28 | 上海昊沧系统控制技术有限责任公司 | 基于jwt认证应用实现单终端登录限制的方法及系统 |
CN112929453A (zh) * | 2021-03-26 | 2021-06-08 | 建信金融科技有限责任公司 | 一种共享session数据的方法和装置 |
CN113132365A (zh) * | 2021-04-07 | 2021-07-16 | 武汉光庭信息技术股份有限公司 | 车载T-Box的通信安全保护方法及系统 |
CN113599833A (zh) * | 2021-08-03 | 2021-11-05 | 深圳市乐天堂科技有限公司 | 账号登录方法、装置、计算设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347068A (zh) * | 2017-07-10 | 2017-11-14 | 恒生电子股份有限公司 | 单点登录方法及系统、电子设备 |
CN108900471A (zh) * | 2018-05-31 | 2018-11-27 | 北京证大向上金融信息服务有限公司 | 用于传输数据的服务器、客户端、网络系统及方法 |
CN109587251A (zh) * | 2018-12-07 | 2019-04-05 | 用友网络科技股份有限公司 | 会话访问方法以及服务器 |
CN110177120A (zh) * | 2019-06-14 | 2019-08-27 | 北京首都在线科技股份有限公司 | 一种单点登录的方法、装置及计算机可读存储介质 |
CN110232265A (zh) * | 2019-06-21 | 2019-09-13 | 杭州安恒信息技术股份有限公司 | 双重身份认证方法、装置及系统 |
CN110381031A (zh) * | 2019-06-21 | 2019-10-25 | 中国平安财产保险股份有限公司 | 单点登录方法、装置、设备及计算机可读存储介质 |
CN110933092A (zh) * | 2019-12-03 | 2020-03-27 | 银清科技有限公司 | 一种基于jwt的单点登录实现方法及装置 |
-
2020
- 2020-08-25 CN CN202010865388.7A patent/CN112035822B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347068A (zh) * | 2017-07-10 | 2017-11-14 | 恒生电子股份有限公司 | 单点登录方法及系统、电子设备 |
CN108900471A (zh) * | 2018-05-31 | 2018-11-27 | 北京证大向上金融信息服务有限公司 | 用于传输数据的服务器、客户端、网络系统及方法 |
CN109587251A (zh) * | 2018-12-07 | 2019-04-05 | 用友网络科技股份有限公司 | 会话访问方法以及服务器 |
CN110177120A (zh) * | 2019-06-14 | 2019-08-27 | 北京首都在线科技股份有限公司 | 一种单点登录的方法、装置及计算机可读存储介质 |
CN110232265A (zh) * | 2019-06-21 | 2019-09-13 | 杭州安恒信息技术股份有限公司 | 双重身份认证方法、装置及系统 |
CN110381031A (zh) * | 2019-06-21 | 2019-10-25 | 中国平安财产保险股份有限公司 | 单点登录方法、装置、设备及计算机可读存储介质 |
CN110933092A (zh) * | 2019-12-03 | 2020-03-27 | 银清科技有限公司 | 一种基于jwt的单点登录实现方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699404A (zh) * | 2020-12-29 | 2021-04-23 | 平安普惠企业管理有限公司 | 一种校验权限的方法、装置、设备及存储介质 |
CN112765583A (zh) * | 2021-01-27 | 2021-05-07 | 海尔数字科技(青岛)有限公司 | 一种单点登录方法、装置、设备及介质 |
CN112597472A (zh) * | 2021-03-03 | 2021-04-02 | 北京视界云天科技有限公司 | 单点登录方法、装置及存储介质 |
CN112597472B (zh) * | 2021-03-03 | 2021-06-04 | 北京视界云天科技有限公司 | 单点登录方法、装置及存储介质 |
CN112861092A (zh) * | 2021-03-10 | 2021-05-28 | 上海昊沧系统控制技术有限责任公司 | 基于jwt认证应用实现单终端登录限制的方法及系统 |
CN112929453A (zh) * | 2021-03-26 | 2021-06-08 | 建信金融科技有限责任公司 | 一种共享session数据的方法和装置 |
CN113132365A (zh) * | 2021-04-07 | 2021-07-16 | 武汉光庭信息技术股份有限公司 | 车载T-Box的通信安全保护方法及系统 |
CN113599833A (zh) * | 2021-08-03 | 2021-11-05 | 深圳市乐天堂科技有限公司 | 账号登录方法、装置、计算设备及存储介质 |
CN113599833B (zh) * | 2021-08-03 | 2024-03-12 | 深圳市乐天堂科技有限公司 | 账号登录方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112035822B (zh) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035822B (zh) | 多应用单点登录方法、装置、设备及存储介质 | |
CN108235806B (zh) | 安全访问区块链的方法、装置、系统、存储介质及电子设备 | |
US11323441B2 (en) | System and method for proxying federated authentication protocols | |
CA2999343C (en) | Secure enrolment of security device for communication with security server | |
EP3073699B1 (en) | System and method for controlling mutual access of smart devices | |
CN111245825B (zh) | 小程序登录方法、服务器和电子设备 | |
US20180007033A1 (en) | Communication device, communication method, communication system, and non-transitory computer readable medium | |
US8769291B2 (en) | Certificate generation for a network appliance | |
CN111737366B (zh) | 区块链的隐私数据处理方法、装置、设备以及存储介质 | |
US20150188779A1 (en) | Split-application infrastructure | |
US20160365981A1 (en) | Code signing system with machine to machine interaction | |
JP2014099030A (ja) | デバイス装置、制御方法、およびそのプログラム。 | |
CN111274591A (zh) | 一种访问Kubernetes集群的方法、装置、电子设备和介质 | |
CN113742676A (zh) | 一种登录管理方法、装置、服务器、系统及存储介质 | |
CN113505353B (zh) | 一种认证方法、装置、设备和存储介质 | |
US12041173B2 (en) | Whitelisting clients accessing resources via a secure web gateway with time-based one time passwords for authentication | |
CN112565236A (zh) | 信息鉴权方法、装置、计算机设备及存储介质 | |
CN115733687A (zh) | 系统账号登录控制方法、装置、服务器及可读存储介质 | |
JP5400096B2 (ja) | 属性情報開示システムおよび属性情報開示方法 | |
CN114158046A (zh) | 一键登录业务的实现方法和装置 | |
CN115525442A (zh) | 一种远程命令执行方法及装置 | |
CN114697137B (zh) | 应用程序的登录方法、装置、设备及存储介质 | |
US20230155842A1 (en) | Method and apparatus for certifying an application-specific key and for requesting such certification | |
WO2020017643A1 (ja) | 電子署名システム、証明書発行システム、鍵管理システム、証明書発行方法及びプログラム | |
CN113329015A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |