CN112491931B - 一种基于jwt的用户认证的限流方法及装置 - Google Patents
一种基于jwt的用户认证的限流方法及装置 Download PDFInfo
- Publication number
- CN112491931B CN112491931B CN202011503384.0A CN202011503384A CN112491931B CN 112491931 B CN112491931 B CN 112491931B CN 202011503384 A CN202011503384 A CN 202011503384A CN 112491931 B CN112491931 B CN 112491931B
- Authority
- CN
- China
- Prior art keywords
- login
- user
- jwt
- tokenid
- password
- 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
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/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- 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
-
- 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/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种基于JWT的用户认证的限流方法及装置,所述方法包括:校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;在数据库中记录并更新对应用户的登录状态,登录IP,TokenID;接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT;若校验通过,校验同样的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效。本发明可以从源端登录开始限制并发资源的访问,提升了系统的安全性和稳定性。
Description
技术领域
本发明属于信息安全技术领域,具体涉及一种基于JWT的用户认证的限流方法及装置。
背景技术
随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因为基于传统的session管理用户信息,需要将用户信息保存在服务端,即便近几年内存数据库逐渐成熟,对于服务端仍是不小的压力,特别是对于用户量大的互联网系统。JWT的解决方案是,将认证信息返回个客户端,储存在客户端,下次访问其他页面,需要从客户端传递认证信息回服务器端。
当前基于JWT的用户认证技术大多为了解决单点登录和跨应用的,这对于分布式系统来说是很有必要的,但绝大多数基于JWT的认证用户技术并不能防止不同的用户使用同一个认证信息在不同的设备上访问资源,这对于高并发的系统来说,存在一定的安全隐患。
发明内容
有鉴于此,本发明提出了本发明的目的在于解决认证信息泄漏时多个设备使用同一个认证信息进行资源访问的问题。
本发明第一方面,公开一种基于JWT的用户认证的限流方法,所述方法包括:
校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;
在数据库中记录并更新对应用户的登录状态,登录IP,TokenID;
接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT;
若校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效。
优选的,所述生成的JWT负荷中携带用户名,当前登录IP。
优选的,所述接收到客户端的资源访问请求中携带用户的JWT,接收到客户端的资源访问请求时,校验用户的用户名、密码,校验所述JWT是否过期。
优选的,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中用户上一次登录的TokenID,使上一次登录的TokenID失效具体包括:
获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息并跳转至登陆页面;
比较当前请求的登录IP与上一次登录时的登录IP;
若相同,则通过验证,返回用户请求的资源至客户端;
否则,将数据库中上一次登录的TokenID置为空,根据当前登录信息重新生成JWT,使前一个同样用户名登录的TokenID失效。
优选的,数据库中用户登录信息包括登录IP、当前账号上个登录用户的TokenID。
本发明第二发明,公开一种基于JWT的用户认证的限流装置,所述装置包括:
JWT生成单元:校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;
数据库单元:在数据库中记录并更新对应账号的登录状态,登录IP,TokenID;
检验单元:接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT是否过期;
限流单元:若检验单元校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效。
优选的,所述限流单元具体用于:
获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息并跳转至登陆页面;
若当前请求的TokenID与上一次登录时的TokenID相同,则比较当前请求的登录IP与上一次登录时的登录IP;
若相同,则通过验证,返回用户请求的资源;
否则,将数据库中上一次登录的TokenID置为空,重新生成JWT,使前一个同样用户名登录的TokenID失效。
本发明相对于现有技术具有以下有益效果:
本发明实现同一个账号只能限制一个用户登录,后面登录的用户会自动踢掉前面登录的用户,防止账号认证信息被窃取时不同的用户使用同一个认证信息在不同的设备上访问资源,从而从源端登录开始限制并发资源的访问,提升了系统的安全性和稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于JWT的用户认证的限流方法流程示意图;
图2为本发明本发明客户端与服务端交互时序图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1所示,本发明提出一种基于JWT的用户认证的限流方法,所述方法包括:
S1、校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;
客户端登录应用系统,输入用户名和密码,通过HttpRequestServlet可以获取此刻访问的客户端主机地址。对于首次登录的同用户名的用户,去数据库中校验该用户的用户名和密码,如果通过,生成一个JWT。所述生成的JWT负荷中携带用户名,当前登录IP。将JWT发送至客户端并保存在客户端本地。
S2、在数据库中记录并更新对应用户的登录状态,登录IP,TokenID;
数据库中用户登录信息除了包括当前账号的用户名、密码、登录时间外,还包括登录IP、重试登录次数、上个登录用户的TokenID。
S3、接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT;
具体的,客户端携带JWT访问资源,获取客户端发起资源访问请求时携带的JWT,校验用户的用户名、密码,校验JWT是否过期;
S4、若校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效。
具体的,获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息至客户端并跳转至登陆页面。
若当前请求的TokenID与上一次登录时的TokenID相同,进一步比较当前请求的登录IP与上一次登录时的登录IP;
若相同,则通过验证,返回用户请求的资源至客户端,并在客户端展示数据。
否则,说明用户信息已在其他地址登录,将数据库中上一次登录的TokenID置为空,重新生成JWT,使前一个同样用户名登录的TokenID失效。
图2为本发明客户端与服务端交互时序图。客户端用户通过浏览器首次登录时,去数据库中校验该用户的用户名和密码,如果通过,生成一个JWT。将生成的JWT发送给浏览器,浏览器保存首次登录的TokenID到本地。浏览器携带JWT访问服务端资源,服务端校验JWT的合法性,看是否过期,并且将当前请求的TokenID与数据库中的用户TokenID进行比对,看该用户名、密码和登录IP对应的用户信息是否在其他地址登录。如果Token信息校验通过并且已经在其他地方登录,则将数据库中当前账号的上一次登录时的TokenID置空,并且根据当前的信息重新生成JWT,使前一个同样用户名登录的TokenID失效。从而达到限制同一个用户名在不同IP登录的情况。验证通过后,返回数据给浏览器,浏览器展示数据。如果验证不通过,给出相应的提示信息,浏览器展示提示信息,重新跳转到登录界面。
与所述方法实施例相对应,本发明还公开一种基于JWT的用户认证的限流装置,所述装置包括:
JWT生成单元:校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;
数据库单元:在数据库中记录并更新对应账号的登录状态,登录IP,TokenID;
检验单元:接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT是否过期;
限流单元:若检验单元校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效。
所述限流单元具体用于:获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息并跳转至登陆页面;若当前请求的TokenID与上一次登录时的TokenID相同,则比较当前请求的登录IP与上一次登录时的登录IP;若相同,则通过验证,返回用户请求的资源;否则,将数据库中上一次登录的TokenID置为空,重新生成JWT,使前一个同样用户名登录的TokenID失效。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于JWT的用户认证的限流方法,其特征在于,所述方法包括:
校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;
在数据库中记录并更新对应用户的登录状态,登录IP,TokenID;
接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT是否过期;
若校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效,具体包括:
获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息并跳转至登陆页面;
比较当前请求的登录IP与上一次登录时的登录IP;
若相同,则通过验证,返回用户请求的资源至客户端;
否则,将数据库中上一次登录的TokenID置为空,根据当前登录信息重新生成JWT,使前一个同样用户名登录的TokenID失效;
所述生成的JWT负荷中携带用户名,当前登录IP;
所述接收到客户端的资源访问请求中携带用户的JWT;
数据库中用户登录信息包括用户名、密码、登录IP、当前账号上个登录用户的TokenID。
2.一种基于JWT的用户认证的限流装置,其特征在于,所述装置包括:
JWT生成单元:校验用户首次登录时的用户名和密码,生成JWT并发送至客户端保存;所述生成的JWT负荷中携带用户名,当前登录IP;
数据库单元:在数据库中记录并更新对应账号的登录状态,登录IP,TokenID;数据库中用户登录信息包括用户名、密码、登录IP、当前账号上个登录用户的TokenID;
检验单元:接收到客户端的资源访问请求时,校验用户的用户名、密码和携带的JWT是否过期;所述接收到客户端的资源访问请求中携带用户的JWT;
限流单元:若检验单元校验通过,校验用户名、密码和登录IP对应的用户信息是否在其他地址登录,若是,则更新数据库中上一次登录的TokenID,使上一次登录的TokenID失效;
所述限流单元具体用于:
获取当前账号上一次登录时的TokenID和登录IP;
比较当前请求的TokenID与上一次登录时的TokenID,若相同,则校验通过,否则返回错误信息并跳转至登陆页面;
若当前请求的TokenID与上一次登录时的TokenID相同,则比较当前请求的登录IP与上一次登录时的登录IP;
若相同,则通过验证,返回用户请求的资源;
否则,将数据库中上一次登录的TokenID置为空,重新生成JWT,使前一个同样用户名登录的TokenID失效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011503384.0A CN112491931B (zh) | 2020-12-17 | 2020-12-17 | 一种基于jwt的用户认证的限流方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011503384.0A CN112491931B (zh) | 2020-12-17 | 2020-12-17 | 一种基于jwt的用户认证的限流方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112491931A CN112491931A (zh) | 2021-03-12 |
CN112491931B true CN112491931B (zh) | 2023-04-07 |
Family
ID=74914666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011503384.0A Active CN112491931B (zh) | 2020-12-17 | 2020-12-17 | 一种基于jwt的用户认证的限流方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112491931B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177215B (zh) * | 2021-04-30 | 2023-02-28 | 作业帮教育科技(北京)有限公司 | 一种用户登录凭证的处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634301A (zh) * | 2013-11-14 | 2014-03-12 | 新浪网技术(中国)有限公司 | 客户端及其访问服务器中用户存储的私有数据的方法 |
CN106161348A (zh) * | 2015-03-30 | 2016-11-23 | 中兴通讯股份有限公司 | 一种单点登录的方法、系统以及终端 |
CN108512784A (zh) * | 2018-06-21 | 2018-09-07 | 珠海宏桥高科技有限公司 | 基于网关路由转发的鉴权认证方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552780B (zh) * | 2009-04-30 | 2012-11-14 | 用友软件股份有限公司 | 验证方法和验证装置 |
US10862681B2 (en) * | 2017-04-04 | 2020-12-08 | Microsoft Technology Licensing, Llc | Optimized sign out for single account services |
CN107404488B (zh) * | 2017-08-07 | 2020-11-27 | 台州市吉吉知识产权运营有限公司 | 一种同一应用多终端设备互斥方法及装置 |
CN109309683B (zh) * | 2018-10-30 | 2021-09-14 | 泰华智慧产业集团股份有限公司 | 基于token的客户端身份验证的方法及系统 |
CN110691087B (zh) * | 2019-09-29 | 2022-03-01 | 北京搜狐新媒体信息技术有限公司 | 一种访问控制方法、装置、服务器及存储介质 |
CN110784457B (zh) * | 2019-10-17 | 2022-08-19 | 中诚信征信有限公司 | 一种业务访问方法及装置 |
CN110933078B (zh) * | 2019-11-29 | 2022-04-05 | 交通银行股份有限公司 | 一种h5未登录用户会话跟踪方法 |
-
2020
- 2020-12-17 CN CN202011503384.0A patent/CN112491931B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634301A (zh) * | 2013-11-14 | 2014-03-12 | 新浪网技术(中国)有限公司 | 客户端及其访问服务器中用户存储的私有数据的方法 |
CN106161348A (zh) * | 2015-03-30 | 2016-11-23 | 中兴通讯股份有限公司 | 一种单点登录的方法、系统以及终端 |
CN108512784A (zh) * | 2018-06-21 | 2018-09-07 | 珠海宏桥高科技有限公司 | 基于网关路由转发的鉴权认证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112491931A (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107948203B (zh) | 一种容器登录方法、应用服务器、系统及存储介质 | |
US10484385B2 (en) | Accessing an application through application clients and web browsers | |
US9699257B2 (en) | Online business method, system and apparatus based on open application programming interface | |
US7827318B2 (en) | User enrollment in an e-community | |
AU2016349477B2 (en) | Systems and methods for controlling sign-on to web applications | |
US6341352B1 (en) | Method for changing a security policy during processing of a transaction request | |
CN111832000B (zh) | 一种单点登录方法、系统、设备及计算机可读存储介质 | |
CN107770140A (zh) | 一种单点登录认证方法及装置 | |
US20110035505A1 (en) | Captcha-free throttling | |
CN111343145A (zh) | 一种基于Redis的单点登录方法及装置 | |
CN111581631B (zh) | 一种基于redis的单点登录方法 | |
KR20160083930A (ko) | 웹사이트에 로그인하는 단말기가 모바일 단말기인지를 결정하기 위한 방법 및 시스템 | |
US8370914B2 (en) | Transition from WS-Federation passive profile to active profile | |
CN102098158A (zh) | 跨域名单点登录和注销的方法、系统及相应设备 | |
US11886425B2 (en) | Blockchain registry scaling | |
CN109495486B (zh) | 一种基于JWT的单页Web应用集成CAS的方法 | |
JP2009510570A (ja) | ブラウザ・ウィンドウの制御方法 | |
CN105812350A (zh) | 一种跨平台单点登录系统 | |
WO2015096514A1 (en) | Method, terminal and system for resetting payment password | |
CN110753045A (zh) | 不同域之间单点登录的方法 | |
CN112491931B (zh) | 一种基于jwt的用户认证的限流方法及装置 | |
US7233927B1 (en) | Method and system for authenticating accounts on a remote server | |
US11075922B2 (en) | Decentralized method of tracking user login status | |
CN107911379B (zh) | 一种cas服务器 | |
CN112632491A (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 |