CN114079569B - 一种开放授权方法及装置、设备、存储介质 - Google Patents
一种开放授权方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN114079569B CN114079569B CN202010763088.8A CN202010763088A CN114079569B CN 114079569 B CN114079569 B CN 114079569B CN 202010763088 A CN202010763088 A CN 202010763088A CN 114079569 B CN114079569 B CN 114079569B
- Authority
- CN
- China
- Prior art keywords
- authorization
- token
- request
- client
- authentication
- 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.)
- Active
Links
- 238000013475 authorization Methods 0.000 title claims abstract description 456
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000012795 verification Methods 0.000 claims description 169
- 230000008569 process Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 230000005856 abnormality Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 230000007704 transition Effects 0.000 abstract description 6
- 238000004891 communication Methods 0.000 abstract description 2
- 235000014510 cooky Nutrition 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004064 recycling Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0892—Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及通信领域,并公开了一种开放授权方法及装置、设备、存储介质,其中,该方法包括:接收浏览器发送的开放授权请求;检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;接收所述浏览器发送的登录页面请求;检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。应用于私有平台到开放平台的过渡场景,解决过渡中存在的问题。
Description
技术领域
本申请实施例涉及但不限于通信领域技术,尤其涉及一种开放授权方法及装置、设备、存储介质。
背景技术
相关技术中,通过搭建开放平台可以对第三方提供应用程序接口(ApplicationProgramming Interface,API)级别的服务。主流方案是基于开放授权标准2(OpenAuthorization,OAUTH2)协议,以令牌(Token)为API鉴权凭证调用API。
OAUTH2虽然提供了开放认证的协议和方案,但是大多数已有平台都是用客户端和认证服务器(Authentication server)解决登录问题,无法平滑的迁移到OAUTH2方案。
发明内容
有鉴于此,本申请实施例提供一种开放授权方法及装置、设备、存储介质,用于解决大多数已有平台都是用客户端和认证服务器(Authentication server)解决登录问题,无法平滑的迁移到OAUTH2方案。
第一方面,本申请实施例提供一种开放授权方法,所述方法包括:
接收浏览器发送的开放授权请求;检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;接收所述浏览器发送的登录页面请求;检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。
第二方面,本申请实施例提供一种开放授权方法,所述方法包括:
认证授权服务器接收所述浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;接收所述客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与所述授权码;当所述用户信息验证通过时,使用令牌端点生成令牌;将所述令牌发送给客户端。
第三方面,本申请实施例提供一种开放授权方法,所述方法包括:
发送开放授权请求给客户端;接收所述客户端发送的第一临时重定向状态码并将登录页面请求发送给客户端;接收所述第二临时重定向状态码并将开放授权请求发送给认证授权服务器;接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给客户端。
第四方面,本申请实施例提供一种开放授权装置,所述装置包括:
第一接收模块,用于接收浏览器发送的开放授权请求;
重定向模块,用于检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;
第二接收模块,用于接收所述浏览器发送的登录页面请求;
检测模块,用于检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
第一发送模块,用于检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有所述授权码的令牌获取请求;
会话模块,用于接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。
第五方面,本申请实施例提供一种开放授权装置,所述装置包括:
第一接收模块,用于认证授权服务器接收所述浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;第二接收模块,用于接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;第三接收模块,用于接收所述客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与所述授权码;生成模块,用于当所述用户信息验证通过时,使用令牌端点生成令牌;第一发送模块,用于将所述令牌发送给客户端。
第六方面,本申请实施例提供一种开放授权装置,所述装置包括:发送模块,用于发送开放授权请求给客户端;第一接收模块,用于接收所述客户端发送的第一临时重定向状态码并将登录页面请求发送给客户端;第二接收模块,用于接收所述第二临时重定向状态码并将开放授权请求发送给认证授权服务器;第三接收模块,用于接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;第四接收模块,用于接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给客户端。
第七方面,本申请实施例提供一种开放授权设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
第八方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
在本申请实施例中,首先,客户端接收浏览器发送的开放授权请求;然后,当检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面,当检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有所述授权码的令牌获取请求;最后,接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。这样,可以通过检测认证信息,解决现有OAUTH2协议中没有认证标准的问题;通过客户端向认证授权服务器发送携带有所述授权码的令牌获取请求,完成现有资源服务器请求授权服务器验证令牌是否有效的过程,将客户端复用为资源服务器,解决了现有平台没有OAUTH2方案中的资源服务器的问题,进而解决了现有平台无法平滑的迁移到OAUTH2方案的问题;通过令牌进行会话,解决授权标准中只有客户端是否授权,没有客户端权限和用户权限的标准,需要开放平台的问题。如此,在客户端获得令牌后,可以直接请求开放平台上的资源,从而不再需要访问资源服务器以获取资源,提高响应速度,优化用户使用体验。此外,认证授权服务器实现了用户登录管理,从而在实现现有授权服务器的令牌发放和回收功能之前,先进行用户身份验证,保证用户信息安全,增加开放平台授权方式的可靠性。
附图说明
图1A为现有认证方法对第三方提供应用程序接口级别服务的流程示意图;
图1B为本申请实施例提供的一种开放授权方法的流程示意图;
图2A为本申请实施例提供的一种开放授权方法的流程示意图;
图2B为本申请实施例提供的浏览器执行开放授权方法的流程示意图;
图2C为本申请实施例提供的客户端执行开放授权方法的流程示意图;
图2D为本申请实施例提供的认证授权服务器执行开放授权方法的流程示意图;
图2E为本申请实施例提供的一种开放授权方法的流程示意图;
图3为本申请实施例提供的一种开放授权方法的流程示意图;
图4为本申请实施例提供的一种开放授权方法的流程示意图;
图5为本申请实施例提供的一种开放授权方法的流程示意图;
图6为本申请实施例一种开放授权装置的组成结构示意图;
图7为本申请实施例一种开放授权装置的组成结构示意图;
图8为本申请实施例一种开放授权装置的组成结构示意图。
具体实施方式
图1A为现有认证方法对第三方提供应用程序接口级别服务的流程示意图,如图1A所示,描述了客户端10、资源所有者11、授权服务器12和资源服务器13四个角色之间的交互,包括以下步骤:
步骤(a)第三方应用请求用户授权;客户端10给资源所有者11发送开放授权请求(Authorization Request),要求资源所有者11授权。这个开放授权请求可以直接向资源所有者11发出(如图所示),或者最好通过授权服务器12作为客户端10与资源所有者11的中介。
步骤(b)用户同意授权后,会从服务方获取授权书,给第三方应用;授权书是表示资源所有者11授权给客户端10的凭据,使用授权码模式(Authorization Code)、简化模式(Implicit)、密码模式(Resource Owner Password Credentials)和客户端10模式(ClientCredentials)这四种授予类型之一表示指定或使用扩展授权类型。这个授权授予类型取决于请求授权的客户端10和授权服务器12。这里,授权书可以是授权码,或客户端10账户密码。
步骤(c)第三方应用向授权服务器12请求令牌。步骤(d)授权服务器12验证第三方应用并验证授权,如果授权有效,则发出访问的令牌(Access Token)。这里,验证第三方应用可以为验证第三方应用的ID。
步骤(e)第三方应用从资源服务器13请求资源,通过提供令牌进行身份验证,其中,所述资源服务器13的资源受保护。步骤(f)资源服务器13验证令牌,如果有效,响应请求,发送受保护的资源给客户端10。客户端10获得授权的首选方法是从资源所有者11那里使用授权服务器12生成的令牌。
通过以上步骤可以看出,OAUTH2虽然提供了开放认证的协议和方案,但是存在以下缺点:1)只有授权(是否有权限访问)标准,没有认证标准,需要具体的平台结合自身已有的认证系统进行集成。2)授权标准中只有用户是否授权,没有客户端10权限和用户权限的标准,需要开放平台。3)大多数已有平台都是用客户端10和认证服务器解决登录问题,无法平滑的迁移到OAUTH2方案。
下面结合附图和实施例对本申请的技术方案进一步详细阐述。
本申请实施例提供一种开放授权方法,图1B为本申请实施例提供的一种开放授权方法的流程示意图,如图1B所示,所述方法包括:
步骤S101:客户端接收浏览器发送的开放授权请求;
这里,所述客户端相较于相关技术中的客户端,还可以实现资源服务器的功能。当所述客户端实现资源服务器功能时,可以实现自身获取受保护资源的功能。所述客户端可以实现访问资源平台的第三方的功能,可以通过授权获取令牌,通过令牌访问资源服务器中请求受保护的资源。所述被请求的资源可以为用户在现有开发平台上发布的个人信息、设置的用户名以及用户密码。所述开放平台是软件系统将该软件系统的功能封装成一系列计算机易识别的数据接口,开放给客户端使用的平台,这种开放数据接口给客户端使用的行为就叫做开放数据接口(Open API),提供Open API的平台本身就被称为开放平台。通过所述数据接口,使得客户端可以访问软件系统的资源,而不需要更改该软件系统的源代码。所述浏览器可以为谷歌或者火狐等,用于展示客户端的页面内容。所述开放授权请求用于请求开放平台授权访问软件系统的资源。这里,所述开放授权请求可以为任意的网页页面。例如,可以为任意的.jsp页面。
现有私有平台中只存在客户端和认证服务器不存在资源服务器。而开放平台中除了客户端外还需要资源服务器,因此,为使私有平台可以平滑过渡到开放平台,客户端需要将请求受保护的资源提供给访问所述资源的客户端,以完成私有平台到开放平台平滑过渡。
在实施过程中,客户端接收浏览器发送的开放授权请求,所述开放授权请求中包括请求的路径和缓存(Cookie),缓存中至少包括用于存储用户认证信息的会话(Session)。
浏览器向客户端发起请求,如果客户端需要记录该用户状态,就使用响应向浏览器颁发一个Cookie。浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给客户端。客户端检查该Cookie,找到Cookie中的Session信息,根据Session信息中的认证信息辨认用户状态。
步骤S102:客户端检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面,以向所述浏览器请求所述登录页面;
这里,所述认证信息表征开放授权请求中包括认证对象。所述认证对象至少包括用户的用户名、用户密码以及该用户的上下文。所述用户的上下文可以为用户的角色列表。
客户端接收浏览器发送的开放授权请求后,需要确认浏览器请求中的Cookie,检查该Cookie中的Session信息,根据Session信息中的认证信息辨认用户状态。当不包括认证信息时,需要重新返回登录页面,获得认证信息。
步骤S103:客户端接收所述浏览器发送的登录页面请求;
这里,客户端在检测到开放授权请求中不包括认证信息时,会给浏览器发送重定向的状态码,浏览器接收到客户端发送的状态码,向客户端发送获取新页面的请求,例如,发送获取登录页面的请求。浏览器发送登录页面请求后,客户端获取浏览器发送的登录页面请求。
步骤S104:客户端检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
这里,客户端接收浏览器发送的登录页面请求后,确认浏览器请求中的Cookie,检查该Cookie中的Session信息,当检测到Session信息中的认证信息时,确认当前了用户状态后,将所述开放授权请求重定向到授权页面。
这里,所述授权页面是用于请求资源的页面,可以为浏览器的网页页面,通过该授权页面可知对请求资源的客户端授予了哪些权限。
步骤S105:客户端检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;
所述授权码表征用户同意授权客户端访问开放平台上存储的用户信息,所述认证授权服务器可以用于管理用户登入、登出和会话,授权服务器签发令牌的时候,会把令牌存储下来,用于查询验证;所述资源服务器可以被其他客户端携带令牌调用、或者验证令牌。客户端注册验证以及令牌的创建删除和刷新。所述令牌是由认证授权服务器生成的一串字符串,以作为客户端进行请求的一个令牌,当客户端第一次登录后,认证授权服务器生成一个令牌并将此令牌返回给客户端,以后客户端只需带上这个令牌前来请求用户信息等资源即可。令牌包含过期时间。可以判断访问权限是否过期。
在实施过程中,客户端将带有授权码的令牌获取请求发送给认证授权服务器,以完成根据授权码生成令牌的功能。举例说明,当令牌获取请求为get方式发送时,授权码可以为路径参数的形式体现在路径中。例如,请求路径为op-admin/login?code=j6Z1iA&state=ddHc8P时,授权码j6Z1iA以参数code形式被携带在路径中。
步骤S106:客户端接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。
这里,客户端获得令牌后,只需拿令牌就可以访问开放平台上存储的用户信息等资源,完成资源请求的会话。
在本申请实施例中,首先,客户端接收浏览器发送的开放授权请求;然后,当检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面,当检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有所述授权码的令牌获取请求;最后,接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。这样,可以通过检测认证信息,解决现有OAUTH2协议中没有认证标准的问题;通过客户端向认证授权服务器发送携带有所述授权码的令牌获取请求,完成现有资源服务器请求授权服务器验证令牌是否有效的过程,将客户端复用为资源服务器,解决了现有平台没有OAUTH2方案中的资源服务器的问题,进而解决了现有平台无法平滑的迁移到OAUTH2方案的问题;通过令牌进行会话,解决授权标准中只有客户端是否授权,没有客户端权限和用户权限的标准,需要开放平台的问题。如此,在客户端获得令牌后,可以直接请求开放平台上的资源,从而不再需要访问资源服务器以获取资源,提高响应速度,优化用户使用体验。此外,认证授权服务器实现了用户登录管理,从而在实现现有授权服务器的令牌发放和回收功能之前,先进行用户身份验证,保证用户信息安全,增加开放平台授权方式的可靠性。
本申请实施例提供一种开放授权方法,图2A为本申请实施例提供的一种开放授权方法的流程示意图,如图2A所示,所述方法包括:
步骤S201:客户端接收浏览器发送的开放授权请求;
步骤S202:客户端检测到所述开放授权请求中不包括认证信息时,生成用于表征授权失败的匿名认证令牌;
所述匿名认证令牌是通过匿名认证过滤器生成的。当没有认证信息时,不存在认证对象,认证对象属性值为空(NULL),若不进行处理,就会发生空指针异常,导致程序出错。这里,使用匿名认证过滤器可以为匿名访问的用户生成一个匿名认证令牌,这样在以后进行权限认证或者做其它操作时无需再判断认证对象是否为NULL了,而是直接把它当做一个有认证对象的认证进行处理。
示例性地,匿名认证过滤器可以为AnonymousAuthenticationFilter,生成的匿名认证令牌可以为AnonymousAuthenticationToken。
步骤S203:客户端调用拦截器检测到匿名认证令牌时,抛出授权失败异常;
其中,拦截器可以为FilterSecurityInterceptor,该拦截器是Spring框架中处理认证方式的过滤器,该过滤器主要处理没有认证的请求,并对该请求进行鉴权。认证失败异常可以为AccessDenied,即不具有访问的权限。
步骤S204:客户端调用异常过滤器捕获授权失败异常并保存开放授权请求;
这里,异常过滤器可以为ExceptionTranslationFilter,可以用来处理在认证授权过程中抛出的异常,这里,ExceptionTranslationFilter过滤器捕获FilterSecurityInterceptor拦截器抛出的AccessDenied的认证异常,将开放授权请求保存起来,以使得再次调用该请求时能够找到请求路径。
步骤S205:客户端检测到所述开放授权请求中不包括认证信息时,异常过滤器将所述开放授权请求重定向到登录页面并生成第一临时重定向状态码;
这里,异常过滤器在捕获了AccessDenied的认证异常后,对该异常进行处理,将请求路径重定向至登录页面,以处理认证异常。这里,所述第一临时重定向状态码表示重定向到新页面,需要说明的是,以下实施例中出现的第二临时重定向状态码和第三临时重定向状态码均表示重定向到新页面,并且所述第一临时重定向状态码、第二临时重定向状态码和第三临时重定向状态码可以相同,例如,均为状态码202;或者,可以不完全相同,例如,其中之一为除状态码202以外的其他表示重定向的状态码。
步骤S206:客户端将所述第一临时重定向状态码发送给浏览器;
步骤S207:客户端接收所述浏览器发送的登录页面请求;
步骤S208:客户端检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
步骤S209:客户端检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;
步骤S210:客户端接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。
本申请实施例提供一种开放授权方法,如图2B、2C和2D所示,图2B为本申请实施例提供的浏览器执行开放授权方法的流程示意图,包括步骤S301至S305;图2C为本申请实施例提供的客户端执行开放授权方法的流程示意图,包括步骤S401至S415;图2D为本申请实施例提供的认证授权服务器执行开放授权方法的流程示意图,包括步骤S501至S511,步骤所述开放授权方法包括:
步骤S301:浏览器发送开放授权请求给客户端;
步骤S401:客户端接收浏览器发送的开放授权请求;
步骤S402:客户端检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;
步骤S302:浏览器接收所述客户端发送的第一临时重定向状态码并将登录页面请求发送给客户端;
步骤S403:客户端的认证过程过滤器未检测到所述授权码时,提供重定向路径并抛出重定向请求异常;
这里,所述重定向请求异常可以为UserRedirectRequiredException。所述认证过程过滤器可以为OAuth2ClientAuthenticationProcessingFilter。这里用的是OAUTH2中的授权码模式。在授权码模式下,客户端需要先获取授权码,再通过授权码获取令牌。
在实施过程中,客户端的认证过程过滤器未检测到所述授权码,表征用户不同意授权客户端访问开放平台上存储的用户信息。在实施过程中,当授权页面不包括认证信息时,客户端进入登录页面,当登录页面中不包括授权码时,需要继续重定向,此时,客户端等待重定向到下一个路径,并抛出登录页面请求异常。
步骤S404:客户端的上下文过滤器捕获到所述重定向请求异常时,重定向到授权页面并返回第二临时重定向状态码给浏览器;
这里,所述上下文过滤器可以为OAuth2ClientContextFilter,上下文过滤器接收重定向请求异常后,对该异常进行处理,将路径重定向到授权页面,同时,通过第二临时重定向状态码告知浏览器,此时需要进行路径重定向。
步骤S303:浏览器接收所述第二临时重定向状态码并将开放授权请求发送给认证授权服务器;
步骤S501:认证授权服务器接收所述浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;
这里,所述链接成功状态码是指HTTP状态码200,用以发送给浏览器告知请求链接成功。
步骤S304:浏览器接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;
步骤S502:认证授权服务器接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;
步骤S305:浏览器接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给客户端。
步骤S405:客户端接收所述浏览器发送的访问路径,并启动令牌校验过滤器,所述令牌校验过滤器用于从所述访问路径中分析出所述授权码;
这里,所述令牌校验过滤器可以从访问路径的参数中分析出授权码,所述令牌校验过滤器可以为OAuth2ClientAuthenticationProcessingFilter。举例说明,当令牌获取请求的请求路径为op-admin/login?code=j6Z1iA&state=ddHc8P时,令牌校验过滤器可以从路径中分析出,code参数对应的授权码j6Z1iA。
步骤S406:客户端向认证授权服务器发送携带有所述授权码的令牌获取请求;
这里,所述令牌获取请求用于获取授权码请求令牌入口地址,所述令牌获取请求中携带客户端的用户信息与所述授权码。在获得授权码之后,需要将所述授权码发送给认证授权服务器,用于得到令牌,对开放平台的资源进行访问。例如对数据或其他功能的接口进行访问。
步骤S503:认证授权服务器接收所述客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与所述授权码;
这里,所述基础认证过滤器用于判断Http请求的头部是否有授权,且该字段的值是否以Basic开头,并获得Basic后面的客户端信息。这里,所述基础认证过滤器可以为BasicAuthenticationFilter。例如从Base64(clientId:clientsecret)中的账户、密码,用于客户端验证,防止未注册客户端访问。这里的账户、密码均为客户端注册的。
步骤S504:当所述用户信息验证通过时,认证授权服务器使用令牌端点生成令牌;
这里,令牌端点的客户端库由客户端的一组扩展方法提供。这里,使用令牌端点可以生成令牌,并与当前会话绑定,用于会话销毁后去删除关联的令牌,实现单点登出。
步骤S505:认证授权服务器将所述令牌发送给客户端;
步骤S407:客户端将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,其中所述第一权限验证请求包括客户端的用户信息和令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限;
这里,所述第一权限验证请求是根据获得的令牌,对令牌可以访问资源的范围进行验证的请求。这里,所述访问资源的范围为未公开平台(私有平台)上的访问范围。
步骤S506:认证授权服务器接收所述第一权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;
举例说明,例如从令牌获取请求中得到Base关键字后的用户名密码,Base64(clientId:clientsecret),则在接收所述第一权限验证请求后,会将请求中的用户名密码与Base关键字后的用户名密码进行比较,验证用户信息。
步骤S507:认证授权服务器使用令牌校验过滤器对所述令牌进行权限验证,以得到第一权限验证结果,其中,所述第一权限验证结果为私有平台的权限验证结果;
步骤S508:认证授权服务器将所述第一权限验证结果发送给客户端;
步骤S408:客户端接收所述认证授权服务器发送的第一权限验证结果;
这里,所述第一权限验证结果是指私有平台上,所述令牌所能访问的权限内容。
步骤S409:客户端将所述令牌写入缓存路径的根目录中,以保障用户对未开放授权平台的访问;
在未公开平台(私有平台)上进行认证时,采用的认证方式为缓存-会话(cookie-session)的认证方式,而在开放平台上进行认证,只需要根据客户端、认证授权服务器之间的会话进行验证即可。因此,为了兼容已有的cookie-session认证方式,需要把令牌写入缓存(cookie)的根目录中。
步骤S410:客户端将保存的开放授权请求的路径重定向到授权页面,以从所述浏览器获得授权页面;
步骤S411:客户端接收所述浏览器发送的授权页面请求,并分析所述浏览器发送的授权页面请求的路径,获得令牌;
步骤S412:客户端将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,其中,所述第二权限验证请求包括客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限;
这里,所述第二权限验证请求是根据获得的令牌,对令牌可以访问资源的范围进行验证的请求。这里,所述访问资源的范围为开放平台上的访问范围。
步骤S509:认证授权服务器接收所述客户端发送的第二权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;其中,所述第二权限验证请求为获取验证令牌的入口,所述第二权限验证请求中包括客户端的用户信息与令牌;
在实施过程中,当需要对令牌进行验证时,首先需要获得验证令牌的入口,所述入口可以为入口地址,认证授权服务器通过调用该入口地址完成验证令牌的功能。在进行令牌验证时,首先需要对持有令牌的用户信息进行验证,再用户信息有效的情况下,对该用户持有的令牌进行验证。
步骤S510:认证授权服务器使用令牌校验过滤器对所述令牌进行权限验证,以得到第二权限验证结果,其中,所述第二权限验证结果为开方平台的权限验证结果;
步骤S511:认证授权服务器将所述第二权限验证结果发送给客户端。
步骤S413:客户端接收所述认证授权服务器发送的第二权限验证结果;
这里,所述第一权限验证结果是指开放平台上,所述令牌所能访问的权限内容。
步骤S414:客户端利用第一权限验证结果和第二权限验证结果初始化安全上下文,得到授权内容;
这里,所述安全上下文是指一类定义进程允许执行内容的许可和权限的集合。操作系统中的安全上下文是通过登录会话定义的,并通过令牌维护。
在实施过程中,客户端在获得了第一权限验证结果和第二权限验证结果后,可以根据该客户端在私有平台和公开平台上的权限,初始化安全上下文,通过安全上下文可以得到该客户端的授权内容。
步骤S415:客户端利用所述授权内容开启会话。
在本申请实施例中,客户端将所述令牌写入缓存路径的根目录中。这样,可以保障用户对未开放授权平台的访问,使得采用缓存会话认证方式的未公开平台能够继续保留缓存信息,完成私有平台到开放平台的平滑过渡。
相关技术的OAUTH2虽然提供了开放认证的协议、方案,但是存在以下缺点:1)只有授权(是否有权限访问)标准,没有认证标准,需要具体的平台结合自身已有的认证系统进行集成。2)授权标准中只有用户是否授权,没有客户端权限和用户权限的标准,需要开放平台。3)大多数已有平台都是用客户端和认证服务器解决登录问题,无法平滑的迁移到OAUTH2方案。
本申请实施例将通过将授权服务器和已有的认证服务器融合,并将客户端转变为客户端+资源服务器,解决了以下技术问题:1)结合OAUTH2的授权服务器和已有的认证服务器实现用户的登录、授权、令牌发放、登出、令牌回收。2)结合OAUTH2的客户端权限和已有的用户权限系统进行整合。3)提供一种私有平台到开放平台平滑过渡的方案。,本申请实施例中的技术方案为:
授权服务器和已有的认证服务器融合。保留已有登录授权服务器,登录成功后重定向到授权服务器的授权用户获取令牌同时并维护授权服务器的会话ID与令牌的对应关系,返回给客户端。
客户端获取令牌后,可以直接使用令牌调用资源服务器(Resource server)的接口。但是私有平台只有客户端和认证服务器不存在资源服务器。需要把客户端转变为客户端+资源服务器的新的客户端,新的客户端可以实现凭借令牌调用该授权服务器下所有资源服务器的接口;同时为了保障用户对原私有平台的访问,需要把旧平台的客户端回写令牌到cookie中,兼容已有的cookie-session认证方案。
登录流程如下图,op-admin为平台的客户端和资源服务器。op-admin-oauth作为认证服务器和授权服务器。客户端采用的是授权码模式。令牌和会话采用redis存储。令牌端点可生成令牌(例如下文的步骤S38),并与当前会话绑定,用于会话销毁后去删除关联的令牌,实现单点登出。旧平台的cookie可回写(例如在下文的步骤S44)。op-admin作为资源服务器接受接口调用,到op-admin-oauth通过令牌调用资源服务器的接口,资源服务器会拿着令牌去授权服务器验证令牌是否有效,申请令牌的客户端是否有该接口的权限。之后会通过认证服务器验证用户是否有该接口的访问权限。没有权限,拒绝访问,有权限,接受访问。
图2E为本申请实施例提供的一种开放授权方法的流程示意图;如图2E所示,该方法可以包括如下步骤:
步骤S21、浏览器通过jsp页面发送开放授权请求给资源服务器;
本实施例中,jsp页面可以为1:/op-admin/modules/workbench/reportHome.jsp的页面。
步骤S22、客户端检测发现发送的开放授权请求信息中不包括认证信息时,使用匿名认证过滤器生成匿名认证令牌;
示例性地,匿名认证过滤器可以为AnonymousAuthenticationFilter。匿名认证令牌可以为AnonymousAuthenticationToken。
步骤S23、客户端的拦截器抛出认证失败异常;
其中,拦截器可以为FilterSecurityInterceptor,该拦截器是Spring框架中处理认证方式的过滤器,该过滤器主要处理没有认证的开放授权请求,并对该开放授权请求进行鉴权。认证失败异常可以为AccessDenied,即不具有访问的权限。
步骤S24、客户端的异常过滤器保存开放授权请求,重定向到登录页面;
这里,异常过滤器可以为ExceptionTranslationFilter,可以用来处理在认证授权过程中抛出的异常,这里,ExceptionTranslationFilter过滤器捕获FilterSecurityInterceptor拦截器抛出的AccessDenied的认证异常,将路径重定向至登录页面,以处理认证异常。
步骤S25、客户端返回状态码302给浏览器;
状态码302为HTTP状态码,表示该重定向行为是临时性重定向。
步骤S26、浏览器发送登录页面请求给客户端;
步骤S27、客户端的认证过程过滤器发现没有授权码,提供重定向url,抛出用户重定向请求异常;
这里,用户重定向请求异常可以为UserRedirectRequiredException,所述认证过程过滤器可以为OAuth2ClientAuthenticationProcessingFilter。这里使用的是OAUTH2中的授权码模式。在授权码模式下,客户端需要先获取授权码,再通过授权码获取令牌。
步骤S28、客户端的上下文过滤器捕获用户重定向请求异常,重定向到授权页;
这里,所述上下文过滤器可以为OAuth2ClientContextFilter,上下文过滤器接收重定向请求异常后,对该异常进行处理,将路径重定向到授权页面。
步骤S29、返回状态码302给浏览器;(客户端);
步骤S30、浏览器发送开放授权请求给认证授权服务器;
这里,需要说明的是,这里的认证授权服务器是在OAuth2协议中的授权服务器的基础上添加了认证服务器。授权服务器被认证服务器保护,成功登录认证服务器后,才可以访问认证授权服务器的内容。
步骤S31、认证授权服务器给浏览器返回状态码200;
这里,返回状态码200表明请求成功。
步骤S32、浏览器允许重定向;
客户端发送302的相应给浏览器,可以触发浏览器的重定向。
步骤S33:认证授权服务器给浏览器返回状态码302;
步骤S34:浏览器发送重定向的路径给客户端;
步骤S35:客户端启动令牌校验过滤器;
这里,所述过滤器可以为OAuth2ClientAuthenticationProcessingFilter。
步骤S36:客户端获取令牌,发送给认证授权服务器;
获取token/op-admin-oauth/oauth/token。
步骤S37:认证授权服务器使用基础认证过滤器进行第三方应用(客户端)的验证;
这里,基础认证过滤器可以为BasicAuthenticationFilter。BasicAuthenticationFilter会判断Http请求的头部是否有授权,且该字段的值是否以Basic开头,并获得Basic后面的客户端信息,例如从Base64(clientId:clientsecret)中的账户、密码,用于客户端验证,防止未注册客户端访问。这里的账户、密码均为客户端注册的。
步骤S38:认证授权服务器使用令牌端点生成令牌;
令牌端点的客户端库由客户端的一组扩展方法提供。这里,使用令牌端点可以生成令牌,并与当前会话绑定,用于会话销毁后去删除关联的令牌,实现单点登出。
步骤S39:认证授权服务器将生成的令牌发送给客户端;
步骤S40:认证授权服务器验证资源服务发送的内容,验证令牌是否有效;
这里,发送的内容可以为Accesstoken/op-admin-oauth/oauth/check_token。
步骤S41:认证授权服务器使用基础认证过滤器进行第三方应用(客户端)的验证;
步骤S42:认证授权服务器验证令牌;
步骤S43:认证授权服务器返回验证信息给客户端;
步骤S44:客户端使用客户端认证过程成功处理器将令牌写入缓存路径的根目录中;
这里,缓存路径的根目录可以为cookie path根目录,客户端认证过程成功处理器可以为OAuth2ClientAuthenticationProcessSuccessHandler。
步骤S45:客户端取出保存的开放授权请求,并将路径进行重定向;
步骤S46:客户端返回状态码302给浏览器;
步骤S47:浏览器发送开放授权请求给客户端;
步骤S48:客户端通过认证处理过滤器获得令牌;
这里,认证处理过滤器可以为OAuth2AuthenticationProcessingFilte。
步骤S49:认证授权服务器验证客户端发送的令牌是否有效;
客户端会拿着令牌去认证授权服务器验证令牌是否有效,申请令牌的客户端是否有该接口的权限。之后会通过认证服务器验证用户是否有该接口的访问权限。没有权限,拒绝访问,有权限,接受访问。
步骤S50:认证授权服务器使用基础认证过滤器进行第三方应用(客户端)的验证;
步骤S51:认证授权服务器验证令牌;
步骤S52:认证授权服务器返回验证信息给客户端;
步骤S53:客户端将安全上下文进行初始化;
这里,可以使用SecurityContextFilter过滤器初始化SecurityContext安全上下文。
步骤S54:客户端登录过滤器将用户信息写到会话中,验证权限;
步骤S55:客户端向浏览器返回状态成功的HTTP状态码200。
图3为本申请实施例提供的一种开放授权方法的流程示意图;如图3所示,该方法可以实现浏览器开放授权请求调用开放平台中的接口,包括如下步骤:
步骤S310:浏览器发送异步请求访问客户端中的接口;
这里,需要说明的是,给客户端发送的HTTP请求的头部中有令牌信息。
步骤S320:客户端接收浏览器发送的异步请求,分析异步请求的头部中的令牌信息,找到其中的令牌,并将分析出的令牌发送给认证授权服务器进行验证;
这里,缓存可以为cookie。
步骤S330:认证授权服务器将验证结果发送给客户端;
步骤S340:客户端进行权限验证;
步骤S350:客户端将权限验证结果显示在浏览器上。
浏览器发送异步请求访问客户端中的接口。在异步请求头部上放上令牌,将采用cookie/session认证方式的工程的令牌存在cookie中。客户端从异步请求中header/url/cookie中获取令牌,到认证授权服务器验证令牌。验证通过后,进行API权限的验证。有权限时,调用接口,返回数据。
登出分为主动登出与超时登出。保持跟以前一样的使用方式。只是认证授权服务器在销毁认证凭证前会通过认证授权服务器的会话ID与令牌的对应关系,销毁所有关联的令牌。实现环境的整体登出。
图4为本申请实施例提供的一种开放授权方法的流程示意图;如图4所示,该方法可以实现主动登出,包括如下步骤:
步骤S400:浏览器点击登出按钮;
步骤S420:客户端接收登出请求,发送HTTP状态码302进行重定向;
步骤S430:浏览器重定向页面,请求认证授权服务器执行退出动作;
步骤S440:认证授权服务器调用登出过滤器;
步骤S450:登出处理器1找到关系型数据库(Redis)中存储的该令牌对应的相关信息,将所述相关信息删除;
步骤S460:登出处理器2删除缓存和会话;
步骤S470:登出成功,处理器中如果有下一个服务的地址,重定向到服务的地址,若没有,重定向到登录页面;
这里,需要说明的是,需要再次登录才能访问客户端。登出后默认重定向到登录页面。
步骤S480:认证授权服务器返回状态码302,标明浏览器需要重定向;
步骤S490:浏览器访问客户端。
图5为本申请实施例提供的一种开放授权方法的流程示意图;如图5所示,该方法可以实现会话超时登出,包括如下步骤:
步骤S520:认证授权服务器启动监听器检测当前会话是否超时;
步骤S530:会话超时后,认证授权服务器在销毁认证凭证前会通过认证授权服务器的会话ID与令牌的对应关系,销毁所有关联的令牌。
基于前述的实施例,本申请实施例提供一种开放授权装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过开放授权设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图6为本申请实施例一种开放授权装置的组成结构示意图,如图6所示,所述装置600包括第一接收模块601、重定向模块602、第二接收模块603、检测模块604、第一发送模块605和会话模块606,其中:
第一接收模块601,用于接收浏览器发送的开放授权请求;
重定向模块602,用于检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面,以向所述浏览器请求所述登录页面;
第二接收模块603,用于接收所述浏览器发送的登录页面请求;
检测模块604,用于检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
第一发送模块605,用于检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;
会话模块606,用于接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话。
在一些实施例中,所述装置600还包括第一生成模块、异常处理模块和存储模块,其中:
第一生成模块,用于检测到所述开放授权请求中不包括认证信息时,生成用于表征授权失败的匿名认证令牌;
异常处理模块,用于调用拦截器检测到匿名认证令牌时,抛出授权失败异常;
存储模块,用于调用异常过滤器捕获授权失败异常并保存开放授权请求。
在一些实施例中,所述重定向模块602包括重定向子模块和第一发送子模块,其中:
重定向子模块,用于调用异常过滤器将所述开放授权请求重定向到登录页面并生成第一临时重定向状态码;
第一发送子模块,用于将所述第一临时重定向状态码发送给浏览器。
在一些实施例中,所述装置600还包括,其中:提供模块,用于调用认证过程过滤器未检测到所述授权码时,提供重定向路径并抛出重定向请求异常;重定向模块,还用于调用上下文过滤器捕获到所述重定向请求异常时,重定向到授权页面并返回第二临时重定向状态码给浏览器;第三接收模块,用于接收所述浏览器发送的访问路径,并启动令牌校验过滤器,所述令牌校验过滤器用于从所述访问路径中分析出授权码;第二发送模块,用于向认证授权服务器发送携带有所述授权码的令牌获取请求。
在一些实施例中,所述会话模块606包括第二发送子模块、初始化子模块和启动子模块,其中:第二发送子模块,用于将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,其中,所述第一权限验证请求包括客户端的用户信息和所述令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限;还用于将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,其中,所述第二权限验证请求包括客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限;初始化子模块,用于利用第一权限验证结果和第二权限验证结果初始化安全上下文,得到授权内容;启动子模块,用于利用所述授权内容开启会话。
在一些实施例中,所述第二发送子模块包括第一发送单元、第一接收单元和写入单元,其中:第一发送单元,用于将第一权限验证请求发送给所述认证授权服务器,所述第一权限验证请求包括客户端的用户信息和令牌;第一接收单元,用于接收所述认证授权服务器发送的第一权限验证结果;写入单元,用于将所述令牌写入缓存路径的根目录中,以保障用户对未开放授权平台的访问。
在一些实施例中,所述第二发送子模块还包括重定向单元、分析单元、第二发送单元和第二接收单元,其中:重定向单元,用于将保存的开放授权请求的路径重定向到授权页面,以从所述浏览器获得授权页面;分析单元,用于接收所述浏览器发送的授权页面请求,并分析所述浏览器发送的授权页面请求的路径,获得令牌;第二发送单元,用于将第二权限验证请求发送给所述认证授权服务器,其中,所述第二权限验证请求包括客户端的用户信息和所述令牌;第二接收单元,用于接收所述认证授权服务器发送的第二权限验证结果。
图7为本申请实施例一种开放授权装置的组成结构示意图,如图7所示,所述装置700包括第四接收模块701、第五接收模块702、第六接收模块703、第二生成模块704和第三发送模块705,其中:
第四接收模块701,用于认证授权服务器接收所述浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;第五接收模块702,用于接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;第六接收模块703,用于接收所述客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与所述授权码;第二生成模块704,用于当所述用户信息验证通过时,使用令牌端点生成令牌;第三发送模块705,用于将所述令牌发送给客户端。
在一些实施例中,所述装置700还包括第七接收模块、第一验证模块和第四发送模块,其中:第七接收模块,用于接收所述第一权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;
第一验证模块,用于使用令牌校验过滤器对所述令牌进行权限验证,以得到第一权限验证结果,其中,所述第一权限验证结果为私有平台的权限验证结果;第四发送模块,用于将所述第一权限验证结果发送给客户端。
在一些实施例中,所述装置700还包括第八接收模块、第二验证模块和第五发送模块,其中:第八接收模块,用于接收所述客户端发送的第二权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;其中,所述第二权限验证请求为获取验证令牌的入口,所述第二权限验证请求中包括客户端的用户信息与令牌;第二验证模块,用于使用令牌校验过滤器对所述令牌进行权限验证,以得到第二权限验证结果,其中,所述第二权限验证结果为开方平台的权限验证结果;第五发送模块,用于将所述第二权限验证结果发送给客户端。
图8为本申请实施例一种开放授权装置的组成结构示意图,如图8所示,所述装置800包括第六发送模块801、第九接收模块802、第十接收模块803、第十一接收模块804和第十二接收模块805,其中:
第六发送模块801,用于发送开放授权请求给客户端;第九接收模块802,用于接收所述第一临时重定向状态码并将登录页面发送给客户端;第十接收模块803,用于接收所述第二临时重定向状态码并将开放授权请求发送给认证授权服务器;第十一接收模块804,用于接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;第十二接收模块805,用于接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给客户端。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的开放授权方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台开放授权设备执行本申请各个实施例所述方法的全部或部分。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种开放授权设备(例如终端设备或服务器设备),其中,客户端和浏览器运行在同一终端设备上,授权认证服务器运行在服务器设备,该开放授权设备包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例提供的方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例提供的方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种开放授权方法,其特征在于,应用于客户端,所述方法包括:
接收浏览器发送的开放授权请求;
检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;
接收所述浏览器发送的登录页面请求;
检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;
接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话;
所述利用所述令牌进行会话,包括:
将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,其中,所述第一权限验证请求包括客户端的用户信息和所述令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限;
将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,其中,所述第二权限验证请求包括所述客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限;
利用第一权限验证结果和第二权限验证结果初始化安全上下文,得到授权内容;
利用所述授权内容开启会话。
2.根据权利要求1所述的方法,其特征在于,在将所述开放授权请求重定向到登录页面之前,所述方法还包括:
检测到所述开放授权请求中不包括认证信息时,生成用于表征授权失败的匿名认证令牌;
调用拦截器检测到匿名认证令牌时,抛出授权失败异常;
调用异常过滤器捕获授权失败异常并保存开放授权请求。
3.根据权利要求1所述的方法,其特征在于,所述将所述开放授权请求重定向到登录页面,包括:
调用异常过滤器将所述开放授权请求重定向到登录页面并生成第一临时重定向状态码;
将所述第一临时重定向状态码发送给浏览器。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用认证过程过滤器未检测到所述授权码时,提供重定向路径并抛出重定向请求异常;
调用上下文过滤器捕获到所述重定向请求异常时,重定向到授权页面并返回第二临时重定向状态码给浏览器;
接收所述浏览器发送的访问路径,并启动令牌校验过滤器,所述令牌校验过滤器用于从所述访问路径中分析出所述授权码;
向认证授权服务器发送携带有所述授权码的令牌获取请求。
5.根据权利要求1所述的方法,其特征在于,所述将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,包括:
将第一权限验证请求发送给所述认证授权服务器;
接收所述认证授权服务器发送的第一权限验证结果;
对应地,所述方法还包括:
将所述令牌写入缓存路径的根目录中,以保障用户对未开放授权平台的访问。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将保存的开放授权请求的路径重定向到授权页面;
接收所述浏览器发送的授权页面请求,并分析所述浏览器发送的授权页面请求的路径,获得令牌;
所述将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,包括:
将第二权限验证请求发送给所述认证授权服务器;
接收所述认证授权服务器发送的第二权限验证结果。
7.一种开放授权方法,其特征在于,所述方法包括:
接收浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;
接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;
接收客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与授权码;
当所述用户信息验证通过时,使用令牌端点生成令牌;
将所述令牌发送给所述客户端;
接收第一权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;
使用令牌校验过滤器对所述令牌进行权限验证,以得到第一权限验证结果,其中,所述第一权限验证结果为私有平台的权限验证结果;
将所述第一权限验证结果发送给所述客户端;
接收所述客户端发送的第二权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;其中,所述第二权限验证请求为获取验证令牌的入口,所述第二权限验证请求中包括客户端的用户信息与所述令牌;
使用令牌校验过滤器对所述令牌进行权限验证,以得到第二权限验证结果,其中,所述第二权限验证结果为开方平台的权限验证结果;
将所述第二权限验证结果发送给所述客户端。
8.一种开放授权方法,其特征在于,所述方法包括:
发送开放授权请求给客户端;
接收所述客户端发送的第一临时重定向状态码并将登录页面请求发送给客户端;
接收第二临时重定向状态码并将开放授权请求发送给认证授权服务器;
接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;
接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给所述客户端,所述授权页面请求的路径用于所述客户端分析获得令牌,所述令牌用于所述客户端进行如下会话:将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,利用第一权限验证结果和第二权限验证结果初始化安全上下文,得到授权内容,利用所述授权内容开启会话;其中,所述第一权限验证请求包括所述客户端的用户信息和所述令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限,所述第二权限验证请求包括所述客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限。
9.一种开放授权装置,其特征在于,所述装置包括:
第一接收模块,用于接收浏览器发送的开放授权请求;
重定向模块,用于检测到所述开放授权请求中不包括认证信息时,将所述开放授权请求重定向到登录页面;
第二接收模块,用于接收所述浏览器发送的登录页面请求;
检测模块,用于检测到所述登录页面请求中包括认证信息时,将所述开放授权请求重定向到授权页面;
第一发送模块,用于检测到所述授权页面获得用户授权时,向认证授权服务器发送携带有授权码的令牌获取请求;
会话模块,用于接收并保存所述认证授权服务器发送的令牌,并利用所述令牌进行会话;
所述会话模块包括第二发送子模块、初始化子模块和启动子模块,其中:
所述第二发送子模块,用于将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,其中,所述第一权限验证请求包括客户端的用户信息和所述令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限;还用于将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,其中,所述第二权限验证请求包括客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限;
所述初始化子模块,用于利用所述第一权限验证结果和所述第二权限验证结果初始化安全上下文,得到授权内容;
所述启动子模块,用于利用所述授权内容开启会话。
10.一种开放授权装置,其特征在于,所述装置包括:
第四接收模块,用于接收浏览器发送的开放授权请求,并将链接成功状态码发送给所述浏览器;
第五接收模块,用于接收所述浏览器发送的允许授权信息,向所述浏览器返回第三临时重定向状态码;
第六接收模块,用于接收客户端发送的令牌获取请求,并使用基础认证过滤器进行所述客户端的用户信息验证;所述令牌获取请求中携带客户端的用户信息与授权码;
第二生成模块,用于当所述用户信息验证通过时,使用令牌端点生成令牌;
第三发送模块,用于将所述令牌发送给所述客户端;
第七接收模块,用于接收第一权限验证请求,并使用基础认证过滤器进行所述客户端的用户信息验证;
第一验证模块,用于使用令牌校验过滤器对所述令牌进行权限验证,以得到第一权限验证结果,其中,所述第一权限验证结果为私有平台的权限验证结果;
第四发送模块,用于将所述第一权限验证结果发送给所述客户端;
第八接收模块,用于接收所述客户端发送的第二权限验证请求,并使用所述基础认证过滤器进行所述客户端的用户信息验证;其中,所述第二权限验证请求为获取验证令牌的入口,所述第二权限验证请求中包括客户端的用户信息与所述令牌;
第二验证模块,用于使用所述令牌校验过滤器对所述令牌进行权限验证,以得到第二权限验证结果,其中,所述第二权限验证结果为开方平台的权限验证结果;
第五发送模块,用于将所述第二权限验证结果发送给所述客户端。
11.一种开放授权装置,其特征在于,所述装置包括:
第六发送模块,用于发送开放授权请求给客户端;
第九接收模块,用于接收所述客户端发送的第一临时重定向状态码并将登录页面请求发送给客户端;
第十接收模块,用于接收第二临时重定向状态码并将开放授权请求发送给认证授权服务器;
第十一接收模块,用于接收所述认证授权服务器发送的链接成功状态码并将允许授权信息发送给认证授权服务器;
第十二接收模块,用于接收所述认证授权服务器发送的第三临时重定向状态码,并将授权页面请求发送给客户端,所述授权页面请求的路径用于所述客户端分析获得令牌,所述令牌用于所述客户端进行如下会话:将第一权限验证请求发送给所述认证授权服务器,以获取第一权限验证结果,将第二权限验证请求发送给所述认证授权服务器,以获取第二权限验证结果,利用第一权限验证结果和第二权限验证结果初始化安全上下文,得到授权内容,利用所述授权内容开启会话;其中,所述第一权限验证请求包括所述客户端的用户信息和所述令牌,所述第一权限验证结果用于表征所述令牌在私有平台的权限,所述第二权限验证请求包括所述客户端的用户信息和所述令牌,所述第二权限验证结果用于表征所述令牌在开放平台的权限。
12.一种开放授权设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至8任一项所述开放授权方法中的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至8任一项所述开放授权方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010763088.8A CN114079569B (zh) | 2020-07-31 | 2020-07-31 | 一种开放授权方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010763088.8A CN114079569B (zh) | 2020-07-31 | 2020-07-31 | 一种开放授权方法及装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114079569A CN114079569A (zh) | 2022-02-22 |
CN114079569B true CN114079569B (zh) | 2024-05-03 |
Family
ID=80279537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010763088.8A Active CN114079569B (zh) | 2020-07-31 | 2020-07-31 | 一种开放授权方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114079569B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114978675B (zh) * | 2022-05-20 | 2023-06-20 | 辽宁华盾安全技术有限责任公司 | 一种访问认证方法、装置、电子设备及存储介质 |
CN115102782B (zh) * | 2022-07-19 | 2024-04-09 | 平安科技(深圳)有限公司 | 客户端的认证方法及装置、存储介质、计算机设备 |
CN116405268A (zh) * | 2023-03-16 | 2023-07-07 | 深圳前海环融联易信息科技服务有限公司 | 基于开放授权协议的登录方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852895A (zh) * | 2013-11-15 | 2015-08-19 | 株式会社理光 | 在多功能设备上的支持OAuth的云服务的卡认证 |
JP2016085641A (ja) * | 2014-10-27 | 2016-05-19 | キヤノン株式会社 | 権限移譲システム、権限移譲システムにて実行される方法、およびそのプログラム |
CN106470190A (zh) * | 2015-08-19 | 2017-03-01 | 中兴通讯股份有限公司 | 一种Web实时通信平台鉴权接入方法及装置 |
CN107769930A (zh) * | 2017-11-20 | 2018-03-06 | 飞天诚信科技股份有限公司 | 一种认证方式转接方法及装置 |
CN108234448A (zh) * | 2016-12-12 | 2018-06-29 | Sap欧洲公司 | 一种用于浏览器内应用的授权码流 |
CN109428869A (zh) * | 2017-08-31 | 2019-03-05 | 中国电信股份有限公司 | 钓鱼攻击防御方法和授权服务器 |
CN110730174A (zh) * | 2019-10-16 | 2020-01-24 | 东软集团股份有限公司 | 一种网络访问控制方法、装置、设备及介质 |
CN111131242A (zh) * | 2019-12-24 | 2020-05-08 | 北京格林威尔科技发展有限公司 | 一种权限控制方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10904234B2 (en) * | 2014-11-07 | 2021-01-26 | Privakey, Inc. | Systems and methods of device based customer authentication and authorization |
US10581918B2 (en) * | 2017-07-21 | 2020-03-03 | Itron, Inc. | Open authorization claim scheme to secure resources |
-
2020
- 2020-07-31 CN CN202010763088.8A patent/CN114079569B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852895A (zh) * | 2013-11-15 | 2015-08-19 | 株式会社理光 | 在多功能设备上的支持OAuth的云服务的卡认证 |
JP2016085641A (ja) * | 2014-10-27 | 2016-05-19 | キヤノン株式会社 | 権限移譲システム、権限移譲システムにて実行される方法、およびそのプログラム |
CN106470190A (zh) * | 2015-08-19 | 2017-03-01 | 中兴通讯股份有限公司 | 一种Web实时通信平台鉴权接入方法及装置 |
CN108234448A (zh) * | 2016-12-12 | 2018-06-29 | Sap欧洲公司 | 一种用于浏览器内应用的授权码流 |
CN109428869A (zh) * | 2017-08-31 | 2019-03-05 | 中国电信股份有限公司 | 钓鱼攻击防御方法和授权服务器 |
CN107769930A (zh) * | 2017-11-20 | 2018-03-06 | 飞天诚信科技股份有限公司 | 一种认证方式转接方法及装置 |
CN110730174A (zh) * | 2019-10-16 | 2020-01-24 | 东软集团股份有限公司 | 一种网络访问控制方法、装置、设备及介质 |
CN111131242A (zh) * | 2019-12-24 | 2020-05-08 | 北京格林威尔科技发展有限公司 | 一种权限控制方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
基于OAuth2.0安全认证中间件的设计与实现;杨旸;潘俊臣;;网络空间安全;20190725(07);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114079569A (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102429633B1 (ko) | 다수의 웹사이트들 간의 자동 로그인 방법 및 장치 | |
CN114079569B (zh) | 一种开放授权方法及装置、设备、存储介质 | |
US11082225B2 (en) | Information processing system and control method therefor | |
CN106998551B (zh) | 一种应用接入鉴权的方法、系统、装置及终端 | |
CN105871838B (zh) | 一种第三方账号的登录控制方法及用户中心平台 | |
Leiba | Oauth web authorization protocol | |
US9053306B2 (en) | Authentication system, authentication server, service providing server, authentication method, and computer-readable recording medium | |
US9348991B2 (en) | User management of authentication tokens | |
CN111698250B (zh) | 访问请求处理方法、装置、电子设备及计算机存储介质 | |
CN112769826B (zh) | 一种信息处理方法、装置、设备及存储介质 | |
US8369835B2 (en) | Web server constituting single sign-on system, method of controlling operation of same, and recording medium storing program for controlling operation of same | |
CN104539615B (zh) | 基于cas的级联认证方法 | |
US20050188210A1 (en) | System and method facilitating secure credential management | |
US20130254858A1 (en) | Encoding an Authentication Session in a QR Code | |
CN115021991A (zh) | 未经管理的移动设备的单点登录 | |
CN112468481B (zh) | 一种基于CAS的单页和多页web应用身份集成认证方法 | |
US10476733B2 (en) | Single sign-on system and single sign-on method | |
CN105991614B (zh) | 一种开放授权、资源访问的方法及装置、服务器 | |
CN111355713B (zh) | 一种代理访问方法、装置、代理网关及可读存储介质 | |
US7895644B1 (en) | Method and apparatus for accessing computers in a distributed computing environment | |
JP2018055582A (ja) | 通信管理プログラム、通信管理方法および通信管理装置 | |
CN111901289B (zh) | 一种身份认证的方法、装置、设备及存储介质 | |
KR101803535B1 (ko) | 일회용 토큰을 이용한 싱글 사인온 서비스 인증방법 | |
JP2005267529A (ja) | ログイン認証方式、ログイン認証システム、認証プログラム、通信プログラムおよび記憶媒体 | |
US20220150277A1 (en) | Malware detonation |
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 |