CN117313069A - 基于页面公共头的单点登录方法、系统、设备和存储介质 - Google Patents
基于页面公共头的单点登录方法、系统、设备和存储介质 Download PDFInfo
- Publication number
- CN117313069A CN117313069A CN202311128637.4A CN202311128637A CN117313069A CN 117313069 A CN117313069 A CN 117313069A CN 202311128637 A CN202311128637 A CN 202311128637A CN 117313069 A CN117313069 A CN 117313069A
- Authority
- CN
- China
- Prior art keywords
- page
- authorization code
- access token
- script file
- single sign
- 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
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000013475 authorization Methods 0.000 claims abstract description 170
- 238000012795 verification Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000009877 rendering Methods 0.000 claims description 12
- 101150010978 PRKCE gene Proteins 0.000 description 12
- 102100037339 Protein kinase C epsilon type Human genes 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012356 Product development Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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)
- Storage Device Security (AREA)
Abstract
本申请涉及一种基于页面公共头的单点登录方法、系统、设备和存储介质,该方法包括:获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,其中,所述公共头脚本文件包含登录鉴权文件,所述登录鉴权文件用于集成OAuth2协议;基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;接受所述OAuth服务器返回的授权码;基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录。本申请可以提高鉴权登陆的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于页面公共头的单点登录方法、系统、设备和存储介质。
背景技术
目前,在计算机领域,单点登录(Single Sign-On,SSO)是指用户只需通过一次身份验证,即可获得对所有相关系统和服务的访问权限。采用单点登录可以显著提高用户体验,并减少密码管理的复杂度。OAuth2是一种广泛使用的授权框架,用于为Web应用程序和移动应用程序提供安全的、规范化的访问权限。结合使用单点登录和OAuth2可以实现用户只需登录一次,即可在各个相关系统和服务中获得访问权限,并提高安全性。页面公共头技术是一种将多个Web项目中的公共头部的部分提取出来,作为一个独立的前端项目进行打包、升级和部署的技术。这样做有助于减少代码重复,方便统一UI风格和交互方式,并且方便公共功能维护和升级。实现方案是将公共部分打包成JavaScript文件,引入到各个Web项目中创建DOM元素并渲染为公共头。
当前,现有技术中在多个Web项目中实现单点登录是十分困难的,主要是因为每个项目都有自己的用户认证和鉴权系统,且各不相同。同时,使用OAuth2进行登录和授权也需要复杂的流程。因此,需要一种方便、快捷、统一的解决方案来在多个Web项目中实现单点登录OAuth2鉴权,提高用户体验和安全性。如何在多个Web项目中实现方便、快捷地单点登陆,同时保证鉴权的安全性,是亟需解决的技术问题。
发明内容
基于此,本申请提供了一种基于页面公共头的单点登录方法、系统、设备和存储介质,通过引入公共头脚本文件,并在页面上渲染页面公共头,其中,公共头脚本文件包含用于集成OAuth2协议的登录鉴权文件,进一步地,基于公共头脚本文件集成OAuth2协议并进行单点登录,以解决现有技术中存在的问题。
第一方面,提供一种基于页面公共头的单点登录方法,该方法包括:
获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,其中,所述公共头脚本文件包含登录鉴权文件,所述登录鉴权文件用于集成OAuth2协议;
基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;
接受所述OAuth服务器返回的授权码;
基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录。
根据本申请实施例中一种可实现的方式,所述基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求,包括:
获取用户信息,在页面中配置所述用户信息,其中,所述用户信息包括用户标识信息和用户密码信息;
生成第一随机验证字符串,计算出与所述随机验证字符串对应的第一加密字符串;
基于所述第一随机验证字符串和所述第一加密字符串向所述OAuth服务器发起授权请求。
根据本申请实施例中一种可实现的方式,所述接受所述OAuth服务器返回的授权码,包括:
获取所述OAuth服务器返回的授权码,其中所述授权码携带与所述授权码对应的第二加密字符串;
获取所述第二加密字符串的哈希值,响应于所述第二加密字符串的哈希值与所述第一加密字符串的哈希值一致,则接收所述OAuth服务器返回的授权码。
根据本申请实施例中一种可实现的方式,所述基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录,包括:
基于所述授权码向所述OAuth服务器发送授权码交换请求,其中,所述授权码交换请求携带所述第一随机验证字符串信息;
接收所述OAuth服务器发送的访问令牌,其中,所述OAuth服务器基于所述授权码交换请求生成访问令牌;
获取所述访问令牌,并根据所述访问令牌进行单点登录。
根据本申请实施例中一种可实现的方式,所述OAuth服务器基于所述授权码交换请求生成访问令牌,包括:
所述OAuth服务器基于所述第二加密字符串计算得到与所述第二加密字符串对应的第二随机验证字符串;
基于所述授权码交换请求携带的第一随机验证字符串信息,确认第一随机验证字符串;
响应于所述第一随机验证字符串和所述第二随机验证字符串相等,则生成访问令牌。
根据本申请实施例中一种可实现的方式,所述获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,包括:
业务系统在页面中使用标签引入公共头脚本文件,其中,所述公共头脚本文件携带用户信息参数;
通过所述公共头脚本文件在页面上渲染页面公共头。
根据本申请实施例中一种可实现的方式,在所述向OAuth服务器发起授权请求之前,还包括:
确认浏览器是否存在缓存的访问令牌信息;
响应于存在所述缓存的访问令牌信息,则解析所述缓存的访问令牌信息进行单点登陆;
响应于不存在所述缓存的访问令牌信息,则向OAuth服务器发起授权请求。
第二方面,提供了一种基于页面公共头的单点登录系统,该系统包括:
引入模块:用于获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,其中,所述公共头脚本文件包含登录鉴权文件,所述登录鉴权文件用于集成OAuth2协议;
发送模块:用于基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;
接受模块:用于接受所述OAuth服务器返回的授权码;
登陆模块:用于基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录。
第三方面,提供了一种计算机设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机指令,所述计算机指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面中涉及的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行上述第一方面中涉及的方法。
根据本申请实施例所提供的技术内容,本申请通过在业务系统中引入公共头脚本文件,并在页面上渲染页面公共头,其中,公共头脚本文件包含用于集成OAuth2协议的登录鉴权文件,进一步地,基于公共头脚本文件集成OAuth2协议并向OAuth服务器发送授权请求;进而接受OAuth服务器返回的授权码并基于授权码获取访问令牌,最后根据访问令牌进行单点登录。本申请通过引入包含登录鉴权文件的公共头脚本文件,可以基于页面公共头进行OAuth2登录和鉴权,从而可以实现在多个Web项目中方便地、统一地单点登陆,同时可以保证鉴权的安全性。本申请提高了多个Web项目中鉴权登陆的便利性,提高了鉴权登陆的效率。
附图说明
图1为一个实施例中基于页面公共头的单点登录方法的流程示意图;
图2为一个实施例中基于页面公共头的单点登录方法的示意图;
图3为一个实施例中基于页面公共头的单点登录系统的结构框图;
图4为一个实施例中计算机设备的示意性结构图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为本申请实施例提供的一种基于页面公共头的单点登录方法的流程图,如图1所示,该方法可以包括以下步骤:
步骤101:获取公共头脚本文件,通过公共头脚本文件在页面上渲染页面公共头,其中,公共头脚本文件包含登录鉴权文件,登录鉴权文件用于集成OAuth2协议。
具体地,页面公共头技术是一种将多个Web项目中的公共部分提取出来,作为一个独立的前端项目进行打包、升级和部署的技术。这样做有助于减少代码重复,方便统一UI风格和交互方式,并且方便公共功能维护和升级。实现方案是将公共部分打包成JavaScript文件,引入到各个Web项目中创建DOM元素并渲染为公共头。本申请的实施例将公共头开发为一个独立的前端项目,并将其打包为JavaScript文件,形成公共头脚本文件。
在本步骤中,如图二所示,首先,第三方业务系统获取公共头脚本文件,引入共同头,通过公共头脚本文件在页面上渲染页面公共头,即页面顶部导航栏。其中,公共头脚本文件包含登录鉴权文件。引入该公共头脚本文件后,会自动渲染公共头并且自动进行OAuth2.0登录鉴权。由此,第三方业务系统可以引入公共头即可引入自动鉴权功能来简化鉴权流程。
在本申请的一个实施例中,获取公共头脚本文件,通过公共头脚本文件在页面上渲染页面公共头,其中,公共头脚本文件包含登录鉴权文件,包括:业务系统在页面中使用标签引入公共头脚本文件,其中,公共头脚本文件携带用户信息参数;通过公共头脚本文件在页面上渲染页面公共头。
具体地,本申请的实施例将公共头开发为一个独立的前端项目,并将其打包为JavaScript文件,形成公共头脚本文件,公共头脚本文件包含登录鉴权配置文件,在需要获取用户信息的页面中引入该公共头脚本文件。
业务系统在页面中使用script标签引入公共头脚本文件地址,其中,公共头脚本文件携带用户信息参数(client_id);通过公共头脚本文件在页面上渲染页面公共头。引入该文件后,会自动渲染公共头并且自动进行OAuth 2.0登录鉴权,提取用户信息。这样,业务系统可以无需过多关心鉴权流程,直接调用提取用户信息的函数即可。
步骤102:基于公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求。
具体地,公共头脚本文件包含登录鉴权文件,业务系统在执行步骤101之后,集成OAuth2,在集成OAuth2时,需要注册应用程序,并获取Client ID(用户标识)和ClientSecret(用户密码)等参数,然后在前端页面中进行配置。在集成OAuth2后,可以引入PKCE扩展授权码流程,以增强安全性,并通过PKCE扩展授权码流程向OAuth服务器发起授权请求。PKCE是OAuth 2.0协议提供的一种扩展授权码流程,主要用来防止授权码被恶意截获和重放攻击。在使用PKCE时,客户端会生成一个随机字符串作为Code Verifier,并将其哈希计算得到一个Code Challenge。然后,在请求授权码时,客户端需要将Code Challenge一起发给认证服务器。认证服务器在返回授权码时,还会返回Code Challenge的哈希值,客户端需要校验两者是否匹配。
在本申请的一个实施例中,基于公共头脚本文件集成OAuth2协议,并向OAuth服务器发起授权请求,包括:获取用户信息,在页面中配置用户信息,其中,用户信息包括用户标识信息和用户密码信息;生成第一随机验证字符串,计算出与随机验证字符串对应的第一加密字符串;基于第一随机验证字符串和第一加密字符串向OAuth服务器发起授权请求。
具体地,首先获取用户信息,在页面中配置用户信息,其中,用户信息包括用户标识信息(Client ID)和用户密码信息(Client Secret)。其次,生成第一随机验证字符串(code_verifier)。其中,code_verifier为随机字符串,长度43-128位,字符范围为[A-Z]/[a-z]/[0-9]/"-"/"."/"_"/"~"。第一随机验证字符串标识由客户端发送给服务器的随机验证字符串。
计算出与随机验证字符串对应的第一加密字符串(code_challenge),其中code_challenge是使用code_challenge_method将code_verifier转换而来的字符串,code_challenge_method为一种加密算法,固定为"S256",表示使用PKCE扩展。基于第一随机验证字符串和第一加密字符串向OAuth服务器发起授权请求。即向OAuth服务器发起授权请求,其中该授权请求携带了用户信息、第一随机验证字符串和第一加密字符串。如图2所示,客户端公共头需要在前端页面中生成一个随机字符串作为Code Verifier,并基于code_challenge_method计算出对应的code_challenge。然后,在请求认证服务器返回授权码时,需要将Code Challenge一同传递给认证服务器。
步骤103:接受OAuth服务器返回的授权码。
具体地,在客户端公共头向OAuth服务器发送了授权请求之后,OAuth服务器会根据授权请求中的参数生成一个授权码code。
客户端公共头发送的授权请求包括以下参数:response_type固定为"code",表示使用授权码模式;client_id即注册应用时获得的客户端标识符。redirect_uri即注册应用时指定的重定向URI。code_verifier即随机字符串,长度43-128位,字符范围为[A-Z]/[a-z]/[0-9]/"-"/"."/"_"/"~"。code_challenge_method即加密算法,固定为"S256",表示使用PKCE扩展。code_challenge即使用code_challenge_method将code_verifier转换而来的字符串。如果授权成功,oauth服务器会生成一个授权码code,同时oauth服务端会记住code_challenge和code_challenge_method;并将用户重定向回应用的重定向URI,附带授权码code作为查询参数。同时,服务器会向客户端返回该授权码,该授权码携带的参数中包括code_challenge。
在本申请的一个实施例中,接受OAuth服务器返回的授权码,包括:获取OAuth服务器返回的授权码,其中授权码携带与授权码对应的第二加密字符串;获取第二加密字符串的哈希值,响应于第二加密字符串的哈希值与第一加密字符串的哈希值一致,则接收OAuth服务器返回的授权码。
具体地,OAuth服务器返回的授权码中携带有code_challenge参数,授权码中对应的code_challenge为第二加密字符串。客户端公共头接受OAuth服务器返回的授权码之后,获取授权码携带与授权码对应的第二加密字符串,获取第二加密字符串的哈希值,同时获取客户端存储的与授权请求对应的第一加密字符串,计算第一加密字符串的哈希值。响应于第二加密字符串的哈希值与第一加密字符串的哈希值一致,则接收OAuth服务器返回的授权码。本步骤中,在认证服务器返回授权码后,需要校验Code Challenge的哈希值是否与认证服务器返回的一致,以确保授权码没有被恶意截获或重放攻击,提高鉴权的安全性。
步骤104:基于授权码获取访问令牌,并根据访问令牌进行单点登录。
具体地,如图二所示,客户端公共头在接收到服务器发送的授权码之后,携带授权码、用户信息等参数进行授权码交换。应用收到授权码code后,使用该授权码code向oauth服务器进行授权码交换请求,以获取访问令牌token。在获取访问令牌token之后根据访问令牌进行单点登录。在用户进行OAuth 2.0身份验证后,Web应用程序会生成一个访问令牌。然后,用户可以使用该访问令牌访问Web应用程序中的所有受保护资源。如果用户访问其他与同一认证服务器集成的Web应用程序,则不需要再次进行OAuth 2.0身份验证。
另外,为了保护受保护的资源,需要在服务端进行JWT(JSON Web Token)验证。在OAuth 2.0身份验证成功后,认证服务器会生成一个JWT,并返回给客户端。客户端在访问受保护的资源时,需要将JWT发送到服务端进行验证。如果JWT是有效的,则用户被授权访问相应的资源。
可以看出,本申请实施例通过在业务系统中引入公共头脚本文件,并在页面上渲染页面公共头,其中,公共头脚本文件包含用于集成OAuth2协议的登录鉴权文件,进一步地,基于公共头脚本文件集成OAuth2协议并向OAuth服务器发送授权请求;进而接受OAuth服务器返回的授权码并基于授权码获取访问令牌,最后根据访问令牌进行单点登录。本申请通过引入包含登录鉴权文件的公共头脚本文件,可以基于页面公共头进行OAuth2登录和鉴权,从而可以实现在多个Web项目中方便地、统一地单点登陆,同时可以保证鉴权的安全性。本申请提高了多个Web项目中鉴权登陆的便利性,提高了鉴权登陆的效率。
在本申请的一个实施例中,基于授权码获取访问令牌,并根据访问令牌进行单点登录,包括:基于授权码向OAuth服务器发送授权码交换请求,其中,授权码交换请求携带第一随机验证字符串信息;接收OAuth服务器发送的访问令牌,其中,OAuth服务器基于授权码交换请求生成访问令牌;获取访问令牌,并根据访问令牌进行单点登录。
具体地,客户端公共头收到授权码code后,将使用该授权码code向oauth服务器进行授权码交换请求,以获取token。基于授权码向OAuth服务器发送授权码交换请求,其中,授权码交换请求携带第一随机验证字符串信息即code_verifier。具体地,授权码交换请求可以包含以下参数:grant_type固定为"authorization_code",表示使用授权码模式;code即授权码;client id即注册应用时获得的客户端标识符;redirect uri即注册应用时指定的重定向URI;code_verifier即在发起授权请求时使用的原始code verifier(即第一随机验证字符串信息)。然后,OAuth服务器基于授权码交换请求生成访问令牌。客户端接收OAuth服务器发送的访问令牌,获取访问令牌,并根据访问令牌进行单点登录。
在本申请的一个实施例中,OAuth服务器基于授权码交换请求生成访问令牌,包括:OAuth服务器基于第二加密字符串计算得到与第二加密字符串对应的第二随机验证字符串;基于授权码交换请求携带的第一随机验证字符串信息,确认第一随机验证字符串;响应于第一随机验证字符串和第二随机验证字符串相等,则生成访问令牌。
具体地,服务器发送的授权码携带的code_challenge为第二加密字符串,OAuth服务器基于第二加密字符串计算得到与第二加密字符串对应的第二随机验证字符串,记为code_verifier-2。客户端发送的授权码交换请求携带的参数中包含第一随机验证字符串信息,根据该信息确认第一随机验证字符串,记为code_verifier-1。判断第一随机验证字符串和第二随机验证字符串是否相等,响应于第一随机验证字符串和第二随机验证字符串相等,则验证通过,生成访问令牌,为客户端颁发token。OAuth服务器将token返回给客户端应用并缓存到浏览器,然后客户端再解析token信息。
在本申请的一个实施例中,在向OAuth服务器发起授权请求之前,还包括:确认浏览器是否存在缓存的访问令牌信息;响应于存在缓存的访问令牌信息,则解析缓存的访问令牌信息进行单点登陆;响应于不存在缓存的访问令牌信息,则向OAuth服务器发起授权请求。
具体地,如图2所示,在步骤102中向OAuth服务器发起授权请求之前,还包括确认浏览器是否存在缓存的访问令牌信息。若存在缓存的可用的访问令牌信息,则解析缓存的访问令牌信息进行单点登陆。若不存在缓存的访问令牌信息,则向OAuth服务器发起授权请求。
可以看出,本申请实施例通过在业务系统中引入公共头脚本文件,并在页面上渲染页面公共头,其中,公共头脚本文件包含用于集成OAuth2协议的登录鉴权文件,进一步地,基于公共头脚本文件集成OAuth2协议并向OAuth服务器发送授权请求;进而接受OAuth服务器返回的授权码并基于授权码获取访问令牌,最后根据访问令牌进行单点登录。本申请通过引入包含登录鉴权文件的公共头脚本文件,可以基于页面公共头进行OAuth2登录和鉴权,从而可以实现在多个Web项目中方便地、统一地单点登陆,同时可以保证鉴权的安全性。本申请提高了多个Web项目中鉴权登陆的便利性,提高了鉴权登陆的效率。
根据本申请提供的具体实施例,本申请所提供的技术方案可以具备以下优点:
首先,现有技术中使用OAuth2进行登录和授权也需要复杂的流程,本申请提供一种方便、快捷、统一的解决方案来实现单点登录OAuth2鉴权,提高用户体验和安全性。在多个Web项目中实现方便、快捷地单点登陆,同时保证鉴权的安全性。
其次,将公共头开发为一个独立的前端项目,并将其打包为JavaScript文件,在需要获取用户信息的页面中引入该文件即可。引入该文件后,会自动渲染公共头并且自动进行OAuth 2.0登录鉴权,提取用户信息。这样,产品侧可以无需过多关心鉴权流程,直接调用提取用户信息的函数即可。
另外,使用PKCE可以提高OAuth 2.0登录鉴权的安全性,引入自动鉴权功能可以方便地提取用户信息。在产品开发过程中,可保证安全性并充分利用现有技术资源,提高开发效率。
在上述实施例的基础上,在本申请的一个具体的实施例中,本申请提供的一种基于页面公共头的单点登录方法,包括以下步骤:
(1)业务侧在页面中使用script标签引入公共头脚本地址并携带client_id参数,通过脚本在页面上渲染公共头(顶部导航栏),同时判断浏览器是否有缓存的token;如果为No将进入第3步,如果为Yes则进入第2步。
(2)校验token里的信息,判断该token是否过期;如果为Yes将进入第3步,如果为No则进入第5步。
(3)首先,公共头通过PKCE生成数据:code_verifier:随机字符串,长度43-128位,字符范围为[A-Z]/[a-z]/[0-9]/"-"/"."/"_"/"~";code_challenge_method:加密算法,固定为"S256",表示使用PKCE扩展;code_challenge:使用code_challenge_method将code_verifier转换而来的字符串。
其次,发起授权请求:公共头通过将用户重定向到oauth服务器的授权端点来发起授权请求。授权请求包括以下参数:response_type:固定为"code",表示使用授权码模式。client_id:注册应用时获得的客户端标识符。redirect_uri:注册应用时指定的重定向URI。code_challenge_method:加密算法,固定为"S256",表示使用PKCE扩展。code_challenge:使用code_challenge_method将code_verifier转换而来的字符串。如果授权成功,oauth服务器会生成一个授权码code,同时oauth服务端会记住code_challenge和code_challenge_method;并将用户重定向回应用的重定向URI,附带授权码code作为查询参数。
(4)授权码交换:应用收到授权码code后,将使用该授权码code向oauth服务器进行授权码交换请求,以获取token。授权码交换请求包括以下参数:grant_type:固定为"authorization_code",表示使用授权码模式。code:授权码。client_id:注册应用时获得的客户端标识符。redirect_uri:注册应用时指定的重定向URI。code_verifier:在发起授权请求时使用的原始code verifier。oauth服务器验证授权码code和相关参数的有效性,并将步骤3中记住的两个值进行计算得到一个字符串code_verifier_1,通过比较code_verifier_1和code_verifier是否相等,相等则验证通过,颁发token。oauth服务器将token返回给应用并缓存到浏览器。
(5)解析token信息,携带token发起请求。
本申请的实施例提供一种方便、快捷、统一的解决方案来实现单点登录OAuth2鉴权,提高用户体验和安全性。在多个Web项目中实现方便、快捷地单点登陆,同时保证鉴权的安全性。将公共头开发为一个独立的前端项目,并将其打包为JavaScript文件,在需要获取用户信息的页面中引入该文件即可。引入该文件后,会自动渲染公共头并且自动进行OAuth2.0登录鉴权,提取用户信息。这样,产品侧可以无需过多关心鉴权流程,直接调用提取用户信息的函数即可。使用PKCE可以提高OAuth 2.0登录鉴权的安全性,引入自动鉴权功能可以方便地提取用户信息。在产品开发过程中,可保证安全性并充分利用现有技术资源,提高开发效率。
应该理解的是,虽然图1和2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本申请中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1和2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图3为本申请实施例提供的一种基于页面公共头的单点登录系统的结构示意图,如图3所示,该系统可以包括:引入模块301、发送模块302、接受模块303、登陆模块304。其中各组成模块的主要功能如下:
引入模块301:用于获取公共头脚本文件,通过公共头脚本文件在页面上渲染页面公共头,其中,公共头脚本文件包含登录鉴权文件,登录鉴权文件用于集成OAuth2协议;
发送模块302:用于基于公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;
接受模块303:用于接受OAuth服务器返回的授权码;
登陆模块304:用于基于授权码获取访问令牌,并根据访问令牌进行单点登录。
在一个实施例中,发送模块302:还用于获取用户信息,在页面中配置用户信息,其中,用户信息包括用户标识信息和用户密码信息;生成第一随机验证字符串,计算出与随机验证字符串对应的第一加密字符串;基于第一随机验证字符串和第一加密字符串向OAuth服务器发起授权请求。
在一个实施例中,接受模块303:还用于获取OAuth服务器返回的授权码,其中授权码携带与授权码对应的第二加密字符串;获取第二加密字符串的哈希值,响应于第二加密字符串的哈希值与第一加密字符串的哈希值一致,则接收OAuth服务器返回的授权码。
在一个实施例中,登陆模块304:还用于基于授权码向OAuth服务器发送授权码交换请求,其中,授权码交换请求携带第一随机验证字符串信息;接收OAuth服务器发送的访问令牌,其中,OAuth服务器基于授权码交换请求生成访问令牌;获取访问令牌,并根据访问令牌进行单点登录。
在一个实施例中,登陆模块304:还用于OAuth服务器基于第二加密字符串计算得到与第二加密字符串对应的第二随机验证字符串;基于授权码交换请求携带的第一随机验证字符串信息,确认第一随机验证字符串;响应于第一随机验证字符串和第二随机验证字符串相等,则生成访问令牌。
在一个实施例中,引入模块301:还用于业务系统在页面中使用标签引入公共头脚本文件,其中,公共头脚本文件携带用户信息参数;通过公共头脚本文件在页面上渲染页面公共头。
在一个实施例中,在向OAuth服务器发起授权请求之前,还包括:确认浏览器是否存在缓存的访问令牌信息;响应于存在缓存的访问令牌信息,则解析缓存的访问令牌信息进行单点登陆;响应于不存在缓存的访问令牌信息,则向OAuth服务器发起授权请求。
可以看出,本申请实施例通过在业务系统中引入公共头脚本文件,并在页面上渲染页面公共头,其中,公共头脚本文件包含用于集成OAuth2协议的登录鉴权文件,进一步地,基于公共头脚本文件集成OAuth2协议并向OAuth服务器发送授权请求;进而接受OAuth服务器返回的授权码并基于授权码获取访问令牌,最后根据访问令牌进行单点登录。本申请通过引入包含登录鉴权文件的公共头脚本文件,可以基于页面公共头进行OAuth2登录和鉴权,从而可以实现在多个Web项目中方便地、统一地单点登陆,同时可以保证鉴权的安全性。本申请提高了多个Web项目中鉴权登陆的便利性,提高了鉴权登陆的效率。
根据本申请提供的具体实施例,本申请所提供的技术方案可以具备以下优点:
首先,现有技术中使用OAuth2进行登录和授权也需要复杂的流程,本申请提供一种方便、快捷、统一的解决方案来实现单点登录OAuth2鉴权,提高用户体验和安全性。在多个Web项目中实现方便、快捷地单点登陆,同时保证鉴权的安全性。
其次,将公共头开发为一个独立的前端项目,并将其打包为JavaScript文件,在需要获取用户信息的页面中引入该文件即可。引入该文件后,会自动渲染公共头并且自动进行OAuth 2.0登录鉴权,提取用户信息。这样,产品侧可以无需过多关心鉴权流程,直接调用提取用户信息的函数即可。
另外,使用PKCE可以提高OAuth 2.0登录鉴权的安全性,引入自动鉴权功能可以方便地提取用户信息。在产品开发过程中,可保证安全性并充分利用现有技术资源,提高开发效率。
上述各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如用户明确同意,对用户切实通知,用户明确授权等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
根据本申请的实施例,本申请还提供了一种计算机设备、一种计算机可读存储介质。本申请还提供了一种计算机设备,包括至少一个处理器,以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的计算机指令,计算机指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一实施例所述基于页面公共头的单点登录方法。
如图4所示,是根据本申请实施例的计算机设备的框图。计算机设备旨在表示各种形式的数字计算机或移动系统。其中数字计算机可以包括台式计算机、便携式计算机、工作台、个人数字助理、服务器、大型计算机和其它适合的计算机。移动系统可以包括平板电脑、智能电话、可穿戴式设备等。
如图4所示,计算机设备400包括计算单元401、ROM 402、RAM 403、总线404以及输入/输出(I/O)接口405,计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
计算单元401可以根据存储在只读存储器(ROM)402中的计算机指令或者从存储单元408加载到随机访问存储器(RAM)403中的计算机指令,来执行本申请方法实施例中的各种处理。计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401可以包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。在一些实施例中,本申请实施例提供的方法可被实现为计算机软件程序,其被有形地包含于计算机可读存储介质,例如存储单元408。
RAM 403还可存储设备400操作所需的各种程序和数据。计算机程序的部分或者全部可以经由ROM 402和/或通信单元409而被载入和/或安装到设备400上。
计算机设备400中的输入单元406、输出单元407、存储单元408和通信单元409可以连接至I/O接口405。其中,输入单元406可以是诸如键盘、鼠标、触摸屏、麦克风等;输出单元407可以是诸如显示器、扬声器、指示灯等。设备400能够通过通信单元409与其他设备进行信息、数据等的交换。
需要说明的是,该设备还可以包括实现正常运行所必需的其他组件。也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件和/或它们的组合中实现。
用于实施本申请的方法的计算机指令可以采用一个或多个编程语言的任何组合来编写。这些计算机指令可以提供给计算单元401,使得计算机指令当由诸如处理器等计算单元401执行时使执行本申请方法实施例中涉及的各步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令用于使计算机执行上述任一实施例所述基于页面公共头的单点登录方法。
本申请提供的计算机可读存储介质可以是有形的介质,其可以包含或存储计算机指令,用以执行本申请方法实施例中涉及的各步骤。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的等形式的存储介质。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (10)
1.一种基于页面公共头的单点登录方法,其特征在于,该方法包括:
获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,其中,所述公共头脚本文件包含登录鉴权文件,所述登录鉴权文件用于集成OAuth2协议;
基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;
接受所述OAuth服务器返回的授权码;
基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录。
2.根据权利要求1所述的基于页面公共头的单点登录方法,其特征在于,所述基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求,包括:
获取用户信息,在页面中配置所述用户信息,其中,所述用户信息包括用户标识信息和用户密码信息;
生成第一随机验证字符串,计算出与所述随机验证字符串对应的第一加密字符串;
基于所述第一随机验证字符串和所述第一加密字符串向所述OAuth服务器发起授权请求。
3.根据权利要求2所述的基于页面公共头的单点登录方法,其特征在于,所述接受所述OAuth服务器返回的授权码,包括:
获取所述OAuth服务器返回的授权码,其中所述授权码携带与所述授权码对应的第二加密字符串;
获取所述第二加密字符串的哈希值,响应于所述第二加密字符串的哈希值与所述第一加密字符串的哈希值一致,则接收所述OAuth服务器返回的授权码。
4.根据权利要求3所述的基于页面公共头的单点登录方法,其特征在于,所述基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录,包括:
基于所述授权码向所述OAuth服务器发送授权码交换请求,其中,所述授权码交换请求携带所述第一随机验证字符串信息;
接收所述OAuth服务器发送的访问令牌,其中,所述OAuth服务器基于所述授权码交换请求生成访问令牌;
获取所述访问令牌,并根据所述访问令牌进行单点登录。
5.根据权利要求4所述的基于页面公共头的单点登录方法,其特征在于,所述OAuth服务器基于所述授权码交换请求生成访问令牌,包括:
所述OAuth服务器基于所述第二加密字符串计算得到与所述第二加密字符串对应的第二随机验证字符串;
基于所述授权码交换请求携带的第一随机验证字符串信息,确认第一随机验证字符串;
响应于所述第一随机验证字符串和所述第二随机验证字符串相等,则生成访问令牌。
6.根据权利要求1所述的基于页面公共头的单点登录方法,其特征在于,所述获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,包括:
业务系统在页面中使用标签引入公共头脚本文件,其中,所述公共头脚本文件携带用户信息参数;
通过所述公共头脚本文件在页面上渲染页面公共头。
7.根据权利要求1所述的基于页面公共头的单点登录方法,其特征在于,在所述向OAuth服务器发起授权请求之前,还包括:
确认浏览器是否存在缓存的访问令牌信息;
响应于存在所述缓存的访问令牌信息,则解析所述缓存的访问令牌信息进行单点登陆;
响应于不存在所述缓存的访问令牌信息,则向OAuth服务器发起授权请求。
8.一种基于页面公共头的单点登录系统,其特征在于,该系统包括:
引入模块:用于获取公共头脚本文件,通过所述公共头脚本文件在页面上渲染页面公共头,其中,所述公共头脚本文件包含登录鉴权文件,所述登录鉴权文件用于集成OAuth2协议;
发送模块:用于基于所述公共头脚本文件集成OAuth2协议,并向OAuth服务器发送授权请求;
接受模块:用于接受所述OAuth服务器返回的授权码;
登陆模块:用于基于所述授权码获取访问令牌,并根据所述访问令牌进行单点登录。
9.一种计算机设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机指令,所述计算机指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311128637.4A CN117313069A (zh) | 2023-09-04 | 2023-09-04 | 基于页面公共头的单点登录方法、系统、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311128637.4A CN117313069A (zh) | 2023-09-04 | 2023-09-04 | 基于页面公共头的单点登录方法、系统、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117313069A true CN117313069A (zh) | 2023-12-29 |
Family
ID=89272807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311128637.4A Pending CN117313069A (zh) | 2023-09-04 | 2023-09-04 | 基于页面公共头的单点登录方法、系统、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117313069A (zh) |
-
2023
- 2023-09-04 CN CN202311128637.4A patent/CN117313069A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602052B (zh) | 微服务处理方法及服务器 | |
US20230370265A1 (en) | Method, Apparatus and Device for Constructing Token for Cloud Platform Resource Access Control | |
TW201516904A (zh) | 線上結算的方法、裝置及系統 | |
TWI646479B (zh) | Business authentication method, system and server | |
US20210377309A1 (en) | System and method for establishing secure session with online disambiguation data | |
CN110708335A (zh) | 访问认证方法、装置及终端设备 | |
WO2023241060A1 (zh) | 数据访问方法和装置 | |
CN115967508A (zh) | 数据访问控制方法及装置、设备、存储介质、程序产品 | |
CN114584381A (zh) | 基于网关的安全认证方法、装置、电子设备和存储介质 | |
KR101940310B1 (ko) | 웹 사이트 검증 장치 및 그 방법 | |
WO2019237950A1 (zh) | 安全验证方法和装置 | |
CN102694776A (zh) | 一种基于可信计算的认证系统及方法 | |
US8904508B2 (en) | System and method for real time secure image based key generation using partial polygons assembled into a master composite image | |
CN112862484A (zh) | 一种基于多端交互的安全支付方法及装置 | |
CN113378147A (zh) | 一种用户登录业务平台的方法 | |
JP2024535330A (ja) | セキュア署名方法、デバイス、及びシステム | |
CN117313069A (zh) | 基于页面公共头的单点登录方法、系统、设备和存储介质 | |
CN112383542B (zh) | 一种用户登录的方法和系统、认证端以及用户端 | |
CN114090996A (zh) | 多方系统互信认证方法及装置 | |
CN114584324A (zh) | 一种基于区块链的身份授权方法和系统 | |
CN108052842A (zh) | 签名数据的存储、验证方法及装置 | |
KR101676719B1 (ko) | 가상 머신 클라이언트 구동 방법, 온라인 금융 서비스 제공 방법 및 이를 수행하는 장치 | |
CN110889698B (zh) | 一种命令处理方法、电子设备及存储介质 | |
CN112487400A (zh) | 基于多页面的单点登录方法、装置、电子设备及存储介质 | |
CN114978675B (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 |