CN112511491A - 一种在前后端分离模式下结合消息队列的单点登入方法 - Google Patents
一种在前后端分离模式下结合消息队列的单点登入方法 Download PDFInfo
- Publication number
- CN112511491A CN112511491A CN202011187169.4A CN202011187169A CN112511491A CN 112511491 A CN112511491 A CN 112511491A CN 202011187169 A CN202011187169 A CN 202011187169A CN 112511491 A CN112511491 A CN 112511491A
- Authority
- CN
- China
- Prior art keywords
- user
- cookie
- biz1
- sdk
- 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
Images
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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种在前后端分离模式下结合消息队列的单点登入方法。能够很好的在跨域条件下实现***间的单点登入和单点退出,且能够减少各***的使用复杂度,提升***的访问效率,并且***可以自定义个性化的登入页面。
Description
技术领域
本发明涉及用户认证领域,尤其涉及一种在前后端分离模式下结合消息队列的单点登入方法。
背景技术
随着企业的不断发展,企业的业务***会越来越多,用户在查询信息或办理业务的过程中需要访问多个业务***,尽管这些业务***是处于一个相互信任的体系,但是为了***的信息安全,用户每访问一个***时都会被要求输入用户名和密码进行验证,无形中增加用户使用***的成本,降低了使用效率,不利于用户在不同***间进行切换。
针对上述问题,业界主要是采取单点登入的方式来解决,目前单点登入的方案主要有:
1、将所有的***都布署在同一个域名并通过不同的URL在路径上进行区分;例:www.xxxx.com/site1和www.xxxx.com/site2 这样两个***可以共用www.xxxx.com下的cookie。
2、将所有***都布署在一个顶级域名下,并将cookie的所属域设置为顶级域;例:site1.xxxx.com 和site2.xxxx.com 并将cookie的所属域设置为.xxxx.com;这样两个***可以共用.xxxx.com下的cookie。
3、对于布署在不同域名下的***,有两种解决方案:
1)通过反向代理服务器Nginx或者统一网关进行请求转发,其实原理还是让用户访问同一个域名下的服务通过共享该域名下的cookie来实现;
2)搭建一个SSO服务器,例如CAS服务器,通过CAS服务器提供一个统一的登入地址并在初次访问不同***时来回重定向传递认证信息。
上述几种实现单点登入的方式或多或少都存在一定的缺陷。Cookie 是一种客户端机制,利用Cookie实现单点登入需保证所有***都布署在相同的网域作用范围内,这样对***的布署有了一定的限制;通过Nginx或统一网关的方式又需要额外布署其它组件,增加了运维和维护的成本;通过CAS的方式实现单点登入,看似比较好的解决单点登入问题,但CAS本身就是一个比较重的组件,首先CAS需与用户中心对接,实现用户的认证功能 ,其次各***需要单独对接CAS服务实现单点登入和单点退出,最后客户端只能通过CAS提供的登入页面来实现单点登入,不能在各***自定义个性化登入页面,并且来回重定向传递认证信息的方式不够优雅并且效率不高。
发明内容
本发明的目的在于提供一种在前后端分离模式下结合消息队列的单点登入方法,能够很好的在跨域条件下实现***间的单点登入和单点退出,且能够减少各***的使用复杂度,提升***的访问效率,并且***可以自定义个性化的登入页面。
为实现上述目的,本发明的技术方案是:一种在前后端分离模式下结合消息队列的单点登入方法,包括如下步骤:
步骤S1、用Spring boot框架搭建用户中心服务,实现统一的帐号注册、认证、授权的功能;
步骤S2、开发一个服务端sdk,即security-sdk,实现请求的认证拦截、消息获取、及认证信息缓存的功能;
步骤S3、开发一个web端sdk,即js-sdk,实现请求Authorization构造、Cookie的获取、推送及删除、用户认证信息的保存的功能;
步骤S4、搭建RabbitMq服务器,并在RabbitMq服务器上创建Exchange名称为:uc_exchange,类型为:topic;再创建两个Queue分别为biz1_quere和biz2_quere,并与uc_exchange进行绑定;
步骤S5、创建两个Spring boot项目模拟业务***,即biz1和biz2,前后端分别引入js-sdk和security-sdk,通过这两个sdk实现业务***之间的单点登入;
步骤S6、用户单点登录biz1;
步骤S7、当用户访问biz2时,由于之前biz1单点登入,此时用户中心域名下必定存在相关cookie保存用户的认证信息,此时biz2通过js-sdk接取用户中心cookie下的认证信息,并设置到biz2域下的cookie中,然后通过构造Authorization即可实现***的访问,无须再次登入;
步骤S8、用户单点退出biz1;
步骤S9、当用户再次访问biz2时,由于之前biz1单点退出,此时用户再发起biz2的接口请求时,由于biz2的本地缓存和用户中心都无相关的用户的认证信息,服务端将会返回用户认证失败请重新登入的错误信息,并重定向到登入页面。
在本发明一实施例中,步骤S4中,Exchange和两个Queue的创建亦可由相关服务启动时创建并进行绑定。
在本发明一实施例中,步骤S6具体实现如下:
S61、用户访问biz1,判断biz1域名下的cookie是否有相关认证信息,若是,执行步骤S63,否则执行步骤S62;
S62、js-sdk通过jsonp方式拉取用户中心域名下的cookie信息,并设置到biz1的cookie中,判断用户中心域名下的cookie信息是否存在相关认证信息,若是,则执行步骤S63;否则重定向到登录页面,由用户输入用户名密码并正确后,返回相关认证信息,并将信息保存到biz1的cookie中,同时通过jsonp方式将cookie推送到用户中心域名下的cookie中,执行步骤S63;
S63、js-sdk获取cookie中的信息通过构造Authorization实现biz1访问。
在本发明一实施例中,步骤S8具体实现如下:
S81、用户退出biz1,调用用户中心的注销接口,判断是否注销成功,若是,执行步骤S82;否则,执行步骤S84;
S82、往消息队列中的uc_exchange写入对应用户的注销信息,并返回给消息订阅;
S83、js-sdk删除biz1域下cookie中相关用户认证信息,并通jsonp方式删除用户中心域下coolie中相关用户认证信息,结束;
S84、返回错误信息,结束。
相较于现有技术,本发明具有以下有益效果:
1、能够很好的在跨域条件下实现***间的单点登入和单点退出;
2、使用sdk的方式能够比较简单的让各***实现对接工作,减少各***的使用复杂度。
3、引入消息队列和本地缓存的功能很好的解决用户认证信息变更时,各***能及时的收到变更通知,更新用户的认证信息。本地缓存的方式更好的提升了***的访问效率。
4、各***可以自定义个性化的登入页面,不拘泥于风格统一的登入页。
附图说明
图1为本发明单点登录流程示意图。
图2为本发明单点退出流程示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明一种在前后端分离模式下结合消息队列的单点登入方法,包括如下步骤:
1.用Spring boot框架搭建用户中心服务(前端uc-web服务端uc-server),实现统一的帐号注册、认证、授权等功能。
2.开发一个服务端sdk(security-sdk),实现请求的认证拦截、消息获取、及认证信息缓存等功能;
3.开发一个web端sdk(js-sdk),实现请求Authorization构造、Cookie的获取、推送及删除、用户认证信息的保存等功能;
4.搭建RabbitMq服务器,并在上面创建Exchange名称为:uc_exchange,类型为:topic;再创建两个Queue分别为biz1_quere和biz2_quere,并与uc_exchange进行绑定(Exchange和两个Queue的创建亦可由相关服务启动时创建并进行绑定);
5.创建两个Spring boot项目(biz1和biz2)模拟业务***,前后端分别引入js-sdk和security-sdk,通过这两个sdk实现业务***之间的单点登入。
6.单点登入流程如图1所示:
7.当用户访问biz2***时,由于之前biz1按上述流程实现了单点登入,此时用户中心域名下必定存在相关cookie保存用户的认证信息,此时biz2通过js-sdk接取用户中心cookie下的认证信息,并设置到biz2域下的cookie中,然后通过构造Authorization即可实现***的访问,无须再次登入。
8.单点退出流程如图2所示:
9.当用户再次访问biz2***时,由于之前biz1按上述流程实现了单点退出,此时用户再发起biz2的接口请求时,由于biz2的本地缓存和用户中心都无相关的用户的认证信息,服务端将会返回用户认证失败请重新登入的错误信息,并重定向到登入页面。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (4)
1.一种在前后端分离模式下结合消息队列的单点登入方法,其特征在于,包括如下步骤:
步骤S1、用Spring boot框架搭建用户中心服务,实现统一的帐号注册、认证、授权的功能;
步骤S2、开发一个服务端sdk,即security-sdk,实现请求的认证拦截、消息获取、及认证信息缓存的功能;
步骤S3、开发一个web端sdk,即js-sdk,实现请求Authorization构造、Cookie的获取、推送及删除、用户认证信息的保存的功能;
步骤S4、搭建RabbitMq服务器,并在RabbitMq服务器上创建Exchange名称为:uc_exchange,类型为:topic;再创建两个Queue分别为biz1_quere和biz2_quere,并与uc_exchange进行绑定;
步骤S5、创建两个Spring boot项目模拟业务***,即biz1和biz2,前后端分别引入js-sdk和security-sdk,通过这两个sdk实现业务***之间的单点登入;
步骤S6、用户单点登录biz1;
步骤S7、当用户访问biz2时,由于之前biz1单点登入,此时用户中心域名下必定存在相关cookie保存用户的认证信息,此时biz2通过js-sdk接取用户中心cookie下的认证信息,并设置到biz2域下的cookie中,然后通过构造Authorization即可实现***的访问,无须再次登入;
步骤S8、用户单点退出biz1;
步骤S9、当用户再次访问biz2时,由于之前biz1单点退出,此时用户再发起biz2的接口请求时,由于biz2的本地缓存和用户中心都无相关的用户的认证信息,服务端将会返回用户认证失败请重新登入的错误信息,并重定向到登入页面。
2.根据权利要求1所述的一种在前后端分离模式下结合消息队列的单点登入方法,其特征在于,步骤S4中,Exchange和两个Queue的创建亦可由相关服务启动时创建并进行绑定。
3.根据权利要求1所述的一种在前后端分离模式下结合消息队列的单点登入方法,其特征在于,步骤S6具体实现如下:
S61、用户访问biz1,判断biz1域名下的cookie是否有相关认证信息,若是,执行步骤S63,否则执行步骤S62;
S62、js-sdk通过jsonp方式拉取用户中心域名下的cookie信息,并设置到biz1的cookie中,判断用户中心域名下的cookie信息是否存在相关认证信息,若是,则执行步骤S63;否则重定向到登录页面,由用户输入用户名密码并正确后,返回相关认证信息,并将信息保存到biz1的cookie中,同时通过jsonp方式将cookie推送到用户中心域名下的cookie中,执行步骤S63;
S63、js-sdk获取cookie中的信息通过构造Authorization实现biz1访问。
4.根据权利要求1所述的一种在前后端分离模式下结合消息队列的单点登入方法,其特征在于,步骤S8具体实现如下:
S81、用户退出biz1,调用用户中心的注销接口,判断是否注销成功,若是,执行步骤S82;否则,执行步骤S84;
S82、往消息队列中的uc_exchange写入对应用户的注销信息,并返回给消息订阅;
S83、js-sdk删除biz1域下cookie中相关用户认证信息,并通jsonp方式删除用户中心域下coolie中相关用户认证信息,结束;
S84、返回错误信息,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187169.4A CN112511491B (zh) | 2020-10-30 | 2020-10-30 | 一种在前后端分离模式下结合消息队列的单点登入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187169.4A CN112511491B (zh) | 2020-10-30 | 2020-10-30 | 一种在前后端分离模式下结合消息队列的单点登入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112511491A true CN112511491A (zh) | 2021-03-16 |
CN112511491B CN112511491B (zh) | 2022-12-06 |
Family
ID=74954709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187169.4A Active CN112511491B (zh) | 2020-10-30 | 2020-10-30 | 一种在前后端分离模式下结合消息队列的单点登入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112511491B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546432A (zh) * | 2012-07-12 | 2014-01-29 | 腾讯科技(深圳)有限公司 | 实现跨域跳转的方法和***以及浏览器、域名服务器 |
CN107707570A (zh) * | 2017-11-13 | 2018-02-16 | 山东省农村信用社联合社 | 跨域单点登录集成方法和*** |
CN107948167A (zh) * | 2017-11-29 | 2018-04-20 | 浙江数链科技有限公司 | 一种单点登录的方法和装置 |
CN108600203A (zh) * | 2018-04-11 | 2018-09-28 | 四川长虹电器股份有限公司 | 基于Cookie的安全单点登录方法及其统一认证服务*** |
CN109587133A (zh) * | 2018-11-30 | 2019-04-05 | 武汉烽火众智智慧之星科技有限公司 | 一种单点登录***及方法 |
CN111294354A (zh) * | 2020-02-04 | 2020-06-16 | 北京嗨学网教育科技股份有限公司 | 用于分布式环境的签名验证方法、装置、设备和存储介质 |
-
2020
- 2020-10-30 CN CN202011187169.4A patent/CN112511491B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546432A (zh) * | 2012-07-12 | 2014-01-29 | 腾讯科技(深圳)有限公司 | 实现跨域跳转的方法和***以及浏览器、域名服务器 |
CN107707570A (zh) * | 2017-11-13 | 2018-02-16 | 山东省农村信用社联合社 | 跨域单点登录集成方法和*** |
CN107948167A (zh) * | 2017-11-29 | 2018-04-20 | 浙江数链科技有限公司 | 一种单点登录的方法和装置 |
CN108600203A (zh) * | 2018-04-11 | 2018-09-28 | 四川长虹电器股份有限公司 | 基于Cookie的安全单点登录方法及其统一认证服务*** |
CN109587133A (zh) * | 2018-11-30 | 2019-04-05 | 武汉烽火众智智慧之星科技有限公司 | 一种单点登录***及方法 |
CN111294354A (zh) * | 2020-02-04 | 2020-06-16 | 北京嗨学网教育科技股份有限公司 | 用于分布式环境的签名验证方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
QQ_38089964: "jsonp、cookies实现单点登录(完全跨域)", 《CSDN》 * |
唐绍华等: "基于Web服务的数字化校园统一身份认证***研究", 《计算机与数字工程》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112511491B (zh) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110120946B (zh) | 一种Web与微服务的统一认证***及方法 | |
EP3694185B1 (en) | Method for facilitating federated single sign-on (sso) for internal web applications | |
US9473419B2 (en) | Multi-tenant cloud storage system | |
US10356153B2 (en) | Transferring session data between network applications accessible via different DNS domains | |
US7860883B2 (en) | Method and system for distributed retrieval of data objects within multi-protocol profiles in federated environments | |
CA2473793C (en) | System, method and apparatus for federated single sign-on services | |
CN101741817B (zh) | 一种多网络融合***、装置及方法 | |
US7860882B2 (en) | Method and system for distributed retrieval of data objects using tagged artifacts within federated protocol operations | |
US8448233B2 (en) | Dealing with web attacks using cryptographically signed HTTP cookies | |
US20070157304A1 (en) | Method, apparatus and computer program product for automatic cookie synchronization between distinct web browsers | |
US9584615B2 (en) | Redirecting access requests to an authorized server system for a cloud service | |
CN105592035A (zh) | 一种用于多个应用***的单点登录方法 | |
MX2011003223A (es) | Acceso al proveedor de servicio. | |
CN112468481A (zh) | 一种基于CAS的单页和多页web应用身份集成认证方法 | |
CN102104483A (zh) | 一种基于负载均衡的单点登录方法、***和负载均衡设备 | |
CN106169963A (zh) | 服务页面的访问方法及***、代理服务器 | |
WO2013170158A1 (en) | Computer readable storage media for selective proxification of applications and method and systems utilizing same | |
CN108200039B (zh) | 基于动态创建临时账号密码的无感知认证授权***和方法 | |
CN110753045A (zh) | 不同域之间单点登录的方法 | |
CN111245791B (zh) | 一种通过反向代理实现管理和it服务的单点登录方法 | |
CN112511491B (zh) | 一种在前后端分离模式下结合消息队列的单点登入方法 | |
CN116455613A (zh) | 一种基于OpenResty跨语言异构微服务统一鉴权优化方法 | |
JP6840505B2 (ja) | システム、サービス提供装置、システムの制御方法およびプログラム | |
CN105959197A (zh) | 一种ssl vpn用户界面定制方法及装置 | |
CN101969426A (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 |