CN110602055A - 长连接鉴权方法、装置、服务器及存储介质 - Google Patents
长连接鉴权方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110602055A CN110602055A CN201910772109.XA CN201910772109A CN110602055A CN 110602055 A CN110602055 A CN 110602055A CN 201910772109 A CN201910772109 A CN 201910772109A CN 110602055 A CN110602055 A CN 110602055A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- long connection
- authentication message
- key
- 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
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/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/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
- H04L63/0846—Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing 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/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例涉及通信技术领域,特别涉及一种长连接鉴权方法、装置、服务器及存储介质。长连接鉴权方法,包括:判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;若接收到已建立长连接的客户端发送的鉴权消息,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;若所述鉴权消息不合法,断开与所述客户端的长连接。采用本发明的实施方式,使得服务端能够对客户端的身份进行识别从而控制与客户端间建立长连接的行为。
Description
技术领域
本发明实施例涉及通信技术领域,特别涉及一种长连接鉴权方法、装置、服务器及存储介质。
背景技术
长连接是指在一个连接上可以连续发送多个数据包,且如果在连接保持期间没有数据包发送,需要连接双方发送用于检测连接的数据包。长连接多用于操作频繁(读写)的场景中,当服务端与客户端需要及时频繁进行通信与交互时,通常会在服务端与客户端间建立长连接,以提升通信交互的效率与速度。然而发明人发现相关技术中存在如下问题:服务端无法控制客户端建立连接的行为,长期被动接受任意客户端的连接行为会造成服务端业务的卡顿;且服务端的长连接资源可能长期被任意连接的无用客户端占用,造成服务端资源的浪费,影响后续需要正常建立的长连接。
发明内容
本发明实施方式的目的在于提供一种长连接鉴权方法、装置、服务器及存储介质,使得服务端能够对客户端的身份进行识别从而控制与客户端间建立长连接的行为。
为解决上述技术问题,本发明的实施方式提供了一种长连接鉴权方法,包括:判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;若接收到已建立长连接的客户端发送的鉴权消息,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;若所述鉴权消息不合法,断开与所述客户端的长连接。
本发明的实施方式还提供了一种长连接鉴权装置,包括:鉴权消息接收模块,用于判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;鉴权消息判断模块,用于在接收到已建立长连接的客户端发送的鉴权消息后,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;客户端处理模块,用于在所述鉴权消息不合法时,断开与所述客户端的长连接。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的长连接鉴权方法。
本发明的实施方式还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的长连接鉴权方法。
本发明实施方式相对于现有技术而言,判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;若接收到已建立长连接的客户端发送的鉴权消息,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;若所述鉴权消息不合法,断开与所述客户端的长连接;也就是说,服务端与客户端建立长连接后,接收客户端主动发送的鉴权消息,并根据客户端发送的鉴权消息中客户端的加密串,对鉴权消息是否合法进行判断,也就是对客户端的身份进行验证识别,从而服务端能够在例如验证识别客户端的身份合法时,继续保持与客户端的长连接;在验证识别客户端的身份不合法时,强制断开与客户端的长连接;通过上述方式,服务端与客户端能够在保持正常的信息交互的情况下,通过验证识别客户端的身份,对与客户端建立的长连接进行控制和管理,避免了因长期被动接收任意客户端的连接而可能造成的服务端卡顿与瘫痪;服务端在对客户端的长连接进行鉴权后,能够及时断开与不合法的客户端建立的长连接,避免了服务端的长连接资源被无用或恶意的客户端占用,有效降低了服务端的长连接资源的占用风险和高额浪费,保障了服务端为客户端提供正常服务的性能和效率。
另外,所述鉴权消息中还包括所述客户端的标识信息,所述客户端的加密串根据所述客户端的标识信息和客户端的密钥计算得到;所述根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法,包括:根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串;判断所述客户端的加密串和所述服务端的加密串是否一致;若不一致,判定所述鉴权消息不合法;上述提供了一种判断鉴权消息是否合法的方式,和计算加密串的方式,即服务端根据客户端的标识信息和服务端的密钥来计算加密串,服务端通过比较计算出的加密串和接收到的客户端的加密串是否一致来判断鉴权消息是否合法,其中,密钥和加密串的存在双重保障了长连接鉴权过程中的安全性。
另外,服务端的密钥通过以下方式得到:定时获取当前时间的时间戳;根据所述当前时间的时间戳和预设加密算法,计算动态密钥;根据所述动态密钥和预设获取规则,获取并更新所述服务端的密钥;在所述计算并更新所述服务端的密钥后,还包括:将所述动态密钥通过消息队列发送至所述服务端对应的客户端,供所述客户端根据所述动态密钥和所述预设获取规则,获取并更新所述客户端的密钥;也就是说,服务端的密钥是根据动态更新的时间戳计算得到的,且服务端的密钥会下发至对应的客户端作为客户端的密钥,从而服务端在对客户端进行鉴权时,服务端计算出的加密串和接收到的客户端的加密串能够一致,也就是服务端能够判定客户端的鉴权消息合法;另外,由于密钥是根据动态更新的时间戳计算得到的,动态更新的时间戳有效提升了密钥的动态性和使用密钥进行信息交互过程中的安全性,降低了密钥被暴力破解的可能性。
另外,所述客户端的标识信息,包括:所述客户端的机器码、所述客户端的编号和所述客户端发送的鉴权消息的时间戳;所述根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串,包括:加密所述客户端的编号,得到所述客户端的编号加密串;拼接所述编号加密串和所述客户端的机器码,得到所述客户端的机器码字符串,加密所述机器码字符串,得到所述客户端的机器码加密串;拼接所述机器码加密串、所述客户端发送的鉴权消息的时间戳和所述编号加密串,得到所述客户端的时间戳字符串,加密所述时间戳字符串,得到所述客户端的时间戳加密串;拼接所述时间戳加密串和所述服务端的密钥,得到所述服务端字符串,加密所述服务端字符串,得到所述服务端的加密串;上述计算加密串的方式结合了用于标识客户端的身份的信息、用于标识鉴权消息的发送时间的信息和服务端的密钥等多种类的信息,并通过了多次数的加密,使得计算出的加密串的安全性得到较为良好的保障;可以理解的是,客户端的加密串的计算方式也如同上述的方式,以保证服务端和客户端使用相同的计算参数和算法能够得到相同的加密串,以令服务端能够根据相同的加密串判定客户端的鉴权消息合法。
另外,所述判断是否接收到已建立长连接的客户端发送的鉴权消息,具体为:判断在预设等待时段内是否接收到已建立长连接的客户端发送的鉴权消息;所述长连接鉴权方法,还包括:若在预设等待时间段内未接收到已建立长连接的客户端发送的鉴权消息,则断开与所述客户端的长连接,从而避免了因服务端无限制等待鉴权消息时造成的服务端资源消耗,有利于服务端及时断开与非法客户端的长连接。
另外,在所述断开与所述客户端的长连接后,还包括:将所述客户端判定为非法客户端,并将所述客户端的网络地址记录为非法网络地址,从而便于在后续对于非法的客户端和非法的网络地址进行其他处理。
另外,在所述断开与所述客户端的长连接后,还包括:将所述客户端被判定为非法客户端的次数累加一次;当所述客户端被判定为非法客户端的次数超过预设阈值时,在预设请求时长内拒绝通过所述非法网络地址发送的请求,也就是拒绝该非法客户端发送的请求,避免了因被动接收非法客户端的请求而造成的服务端的资源占用风险和浪费。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式中长连接鉴权方法的流程图;
图2是根据本发明第一实施方式中另一种长连接鉴权方法的流程图;
图3是根据本发明第二实施方式中密钥的获取方式的流程图;
图4是根据本发明第三实施方式中长连接鉴权方法的流程图;
图5是根据本发明第四实施方式中长连接鉴权装置的结构方框图;
图6是根据本发明第五实施方式中服务器的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种长连接鉴权方法,具体流程如图1所示,包括:
步骤101,判断是否接收到已建立长连接的客户端发送的鉴权消息;若是,执行步骤102;若否,执行步骤103。
步骤102,根据客户端的加密串,判断接收到的鉴权消息是否合法;若否,执行步骤103;若是,执行步骤104。
步骤103,断开与客户端的长连接。
步骤104,保持与客户端的长连接。
下面对本实施方式的长连接鉴权方法的实现细节进行具体的说明,以下内容仅为方便理解提供的细节,并非实施本方案的必须。
本实施方式中,服务端与客户端建立长连接后,接收客户端主动发送的鉴权消息,并根据客户端发送的鉴权消息中客户端的加密串,对鉴权消息是否合法进行判断,也就是对客户端的身份进行验证识别;从而服务端能够在例如验证识别客户端的身份合法时,继续保持与客户端的长连接;在验证识别客户端的身份不合法时,强制断开与客户端的长连接;通过上述方式,服务端与客户端能够在保持正常的信息交互的情况下,通过验证识别客户端的身份,对与客户端建立的长连接进行控制和管理,避免了因长期被动接收任意客户端的连接而可能造成的服务端卡顿与瘫痪;服务端在对客户端的长连接进行鉴权后,能够及时断开与不合法的客户端建立的长连接,避免了服务端的长连接资源被无用或恶意的客户端占用,有效降低了服务端的长连接资源的占用风险和高额浪费,保障了服务端为客户端提供正常服务的性能和效率。
在步骤101中,服务端判断是否接收到已经与自身建立了长连接的客户端发送的鉴权消息;其中,客户端发送的鉴权消息中包括客户端的加密串,用于供服务端对建立了长连接的客户端进行鉴权操作。若服务端接收到已经与自身建立了长连接的客户端发送的鉴权消息,则服务端对鉴权消息进行合法性的验证;若服务端未接收到已经与自身建立了长连接的客户端发送的鉴权消息,则服务端可断开与该客户端建立的长连接。
具体地说,服务端与客户端建立长连接后,客户端需要定时发送心跳信息至服务端以保持服务端与客户端间的长连接和正常的信息交互功能。本实施方式中,可预先对服务端与客户端间发送心跳信息的信息传输格式进行定义,例如,将信息传输格式定义为:
headData+contentLength+dataJson;
其中,headData为int类型参数的报头数据,占据4个字节;contentLength为int类型参数,表示传输的信息的长度,占据4个字节;dataJson为传输的信息的json格式的字符串;在一个实例中,以上述格式传输的信息体现为:00001000{"sn":"12345678","type":"10","status":1,"info":"SUCCESS","data":"{…}"}。
在定义了信息传输格式的基础上,服务端与客户端建立长连接后,服务端立刻接收由客户端发送的心跳信息,若客户端首次发送的心跳信息的信息传输格式不符合预先定义的信息传输格式,则服务端可判定该建立了长连接的客户端为非法的客户端,断开与该客户端的长连接。
若服务端立刻接收到的由客户端发送的心跳信息的信息传输格式符合预先定义的信息传输格式,则服务端在保持与客户端建立长连接的情况下(即服务端判定该客户端为合法客户端的情况下),继续判断是否定时接收到客户端发送的符合预先定义的信息传输格式的心跳信息;若服务端未定时接收到客户端发送的符合预先定义的信息传输格式的心跳信息,则服务端可判定该合法的客户端处于假死状态,同样断开与该客户端的长连接;也就是说,服务端是与建立了长连接且保持正常的信息交互功能的情况下,对客户端进行鉴权,从而服务端能够通过断开与不合法的客户端的长连接来解除客户端长时间对服务端的长连接资源的无效占用,避免了长连接资源的无用消耗,实现对客户端建立的长连接的控制和管理。
在步骤102中,服务端在接收到已经与自身建立了长连接的客户端发送的鉴权消息后,对鉴权消息进行合法性的验证。首先,由于鉴权消息也属于客户端与服务端间传输的信息,因此服务端也可首先对接收到的鉴权消息的格式是否符合上述预先定义的信息传输的格式进行验证,若鉴权消息的格式正确,服务端再进行下一步的验证;若鉴权消息的格式不正确,服务端可直接判定鉴权消息不合法。
具体地说,由于客户端发送的鉴权消息中包括客户端的加密串,服务端可预先与允许建立长连接的客户端约定共享的加密串,从而服务端在接收到客户端的鉴权消息后,判断鉴权消息中包括的客户端的加密串是否与预先约定共享的加密串一致,若一致,说明客户端是服务端允许建立长连接的客户端,判定客户端发送的鉴权消息合法,服务端可保持与客户端的长连接;若不一致,说明客户端不是服务端允许建立长连接的客户端,判定客户端发送的鉴权消息不合法,服务端可断开与客户端的长连接。
另外,本实施方式中还提供了另一种长连接鉴权方法的流程图,包括对步骤102的具体实现,即验证鉴权消息的合法性的具体实现方法,其中,客户端发送的鉴权消息中还包括客户端的标识信息,客户端的加密串是根据客户端的标识信息和客户端的密钥计算得到的;另一种长连接鉴权方法的流程图如图2所示,包括:
步骤101,判断是否接收到已建立长连接的客户端发送的鉴权消息;若是,执行步骤1021;若否,执行步骤103。
步骤1021,根据客户端的标识信息和服务端的密钥,计算服务端的加密串;
步骤1022,判断客户端的加密串和服务端的加密串是否一致;若否,判定鉴权消息不合法,执行步骤103;若是,判定鉴权消息合法,执行步骤104。
具体地说,服务端根据接收到的客户端的标识信息,和服务端的密钥,计算出服务端的加密串;其中,服务端的密钥可以是预先在服务端设置好的密钥,且预先为服务端设置好的密钥可与服务端允许连接的客户端共享,即服务端的密钥可以是服务端与客户端预先协商共享的密钥;另外,客户端的加密串是根据客户端的标识信息和客户端的密钥计算得到的,也就是客户端的加密串是根据客户端的标识信息和与服务端预先协商共享的密钥计算得到的。若向服务端发送标识信息的客户端是服务端允许连接的客户端,则客户端与服务端预先协商有共享的密钥,即客户端的密钥与服务端的密钥是一致的,从而客户端和服务端分别计算得到的加密串也应当一致,则服务端可判定接收到的客户端的鉴权消息是合法的;若向服务端发送标识信息的客户端不是服务端允许连接的客户端,则客户端的密钥与服务端的密钥不一致,从而客户端和服务端分别计算得到的加密串不一致,则服务端可判定接收到的客户端的鉴权消息不合法。
步骤103,服务端在未接收到已建立长连接的客户端发送的鉴权消息时,或是判定鉴权消息不合法时,断开与客户端的长连接,也就是服务端强制断开了与不合法的客户端建立的长连接,避免了服务端的长连接资源被无用或恶意的客户端占用。
步骤104,服务端在判定鉴权消息合法时,保持与客户端的长连接,从而服务端能够继续与合法的客户端进行正常的信息交互,并为客户端提供正常服务。
另外,本实施方式中还提供了一种计算加密串的具体实现方式,下面以服务端为例进行说明:
服务端接收到的客户端的标识信息包括客户端的机器码(可记为key)、客户端的编号(可记为sn)和客户端客户端发送鉴权消息至服务端时的时间戳(可记为time);
首先,服务端通过base64编码方式对客户端的编号(sn)进行加密,得到sn密文;对编码后得到的sn密文通过md5方式进行加密,得到sn加密串;其中,base64编码方式是指:将3个8位字节转化为4个6位字节,并在6位字节的前面补充2个0,形成8位一个字节的形式;若剩下的字符不足3个字节,则使用0填充,输出字符使用“=”,例如,当sn为“12345678”时,通过base64编码方式加密后得到的sn密文为“MTIzNDU2Nzg=”;另外,md5方式是指一种被广泛使用的密码散列函数,能够为需要加密的信息产生一个128位的散列值,用于确保信息传输的完整性和一致性,例如,当sn密文为“MTIzNDU2Nzg=”时,通过md5方式加密后得到的sn加密串为“EB5637CEF0D0BA8A35A8091116D07561”(sn加密串的格式为32位大写md5值)。
服务端在得到sn加密串后,将sn加密串与客户端的机器码(key)进行拼接,得到key字符串,对key字符串通过md5方式进行若干次(例如5次)加密,得到key加密串;
服务端在得到key加密串后,将key加密串、客户端发送鉴权消息至服务端时的时间戳(time)和sn加密串进行拼接,得到time字符串,对time字符串通过md5方式进行若干次(例如5次)加密,得到time加密串;
服务端在得到time加密串后,将time加密串与服务端的密钥进行拼接,得到服务端字符串,对服务端字符串通过md5方式进行若干次(例如256次)加密,得到服务端的加密串。
可以理解的是,客户端通过客户端的标识信息和客户端持有的密钥来计算得到客户端的加密串时的流程也同上述流程一致;上述计算得到服务端的加密串的流程,结合了多种类的信息、使用了多次数的加密,使得计算出的加密串的安全性得到较为良好的保障,但上述流程仅为便于理解的举例说明,并不对实际计算得到服务端的加密串的方式构成限定。
本实施方式相对于现有技术而言,服务端与客户端建立长连接后,接收客户端主动发送的鉴权消息,鉴权消息中包括客户端的加密串和客户端的标识信息,客户端的加密串是根据客户端的标识信息和客户端的密钥计算得到的;服务端根据客户端的标识信息和服务端的密钥,计算服务端的加密串,并判断客户端的加密串和服务端的加密串是否一致,若不一致,则判定鉴权消息不合法,也就是对客户端的身份进行验证识别,从而服务端能够在例如验证识别客户端的身份合法时,继续保持与客户端的长连接;在验证识别客户端的身份不合法时,强制断开与客户端的长连接;通过上述方式,服务端与客户端能够在保持正常的信息交互的情况下,通过密钥和加密串等多重加密的信息验证识别客户端的身份,对与客户端建立的长连接进行控制和管理,避免了因长期被动接收任意客户端的连接而可能造成的服务端卡顿与瘫痪;服务端在对客户端的长连接进行鉴权后,能够及时断开与不合法的客户端建立的长连接,避免了服务端的长连接资源被无用或恶意的客户端占用,有效降低了服务端的长连接资源的占用风险和高额浪费,保障了服务端为客户端提供正常服务的性能和效率。
本发明第二实施方式涉及一种长连接鉴权方法,本实施方式与第一实施方式大致相同,本发明第二实施方式中,在第一实施方式中的长连接鉴权方式的基础上,提供了获取服务端的密钥和客户端的密钥的方式,因此,本实施方式中的长连接鉴权方式的流程同图1所示的流程图,本实施方式中提供密钥的获取方式的流程图,如图3所示,下面对图3的流程做具体说明:
步骤201,定时获取当前时间的时间戳。
步骤202,根据当前时间戳和预设加密算法,计算动态密钥;
具体地说,服务端设置有定时器,定时器用于控制服务端定时去获取当前时间的时间戳;服务端获取到时间戳后,通过预设的加密算法对当前时间的时间戳进行加密,得到当前时间戳的加密串作为动态密钥。
在一个实例中,服务端获取到的时间戳为1559271957,通过md5方式对获取到的时间戳进行加密,得到动态密钥“2EB779CD6FBC0DB8D30A07B0A69390A6”(动态密钥的格式为32位大写md5值)。
步骤203,根据动态密钥和预设获取规则,获取并更新服务端的密钥;
具体地说,服务端在计算出动态密钥后,根据动态密钥和预设的获取规则,从动态密钥中获取出另一串数值作为服务端的密钥;其中,预设的获取规则可根据需求自行设定。可以理解的是,服务端定时获取的时间戳是动态变化的,根据时间戳计算出的动态密钥也是定时动态变化的,从而从动态密钥中获取到的服务端的密钥也是定时动态变化的;因此,在服务端获取到新的服务端的密钥后,对上一次定时获取到的服务端的密钥进行更新;可以理解为,服务端对获取到的最新的服务端的密钥进行存储,覆盖掉上一次定时获取到的服务端的密钥。由于密钥是根据动态更新的时间戳计算得到的,动态更新的时间戳有效提升了密钥的动态性和使用密钥进行信息交互过程中的安全性,降低了密钥被暴力破解的可能性。
在一个实例中,得到动态密钥“2EB779CD6FBC0DB8D30A07B0A69390A6”,预设的获取规则为取动态密钥中的第1、3、5、7、12、14、16、18、23、25、27位的数值组合得到服务端的密钥,即从上述动态密钥中获取到服务端的密钥为“2B7C6CD83BA99”。
步骤204,将动态密钥发送至服务端对应的客户端,供客户端根据动态密钥和预设获取规则,获取并更新客户端的密钥。
具体地说,服务端对应的客户端可以理解为预先约定好的、服务端允许连接的客户端;服务端在计算出动态密钥后,将动态密钥发送至对应的客户端,也就是发送至允许连接的客户端,从而客户端也可以根据动态密钥和预设的获取规则,获取并更新客户端的密钥。
在一个实例中,服务端和对应的客户端通过消息队列建立连接,消息队列可供服务端向客户端发送动态密钥;服务端通过消息队列将动态密钥“2EB779CD6FBC0DB8D30A07B0A69390A6”发送至对应的客户端,客户端根据上述预设的获取规则,取动态密钥中的第1、3、5、7、12、14、16、18、23、25、27位的数值组合得到客户端的密钥,即从上述动态密钥中获取到客户端的密钥为“2B7C6CD83BA99”;上述方式中,各端的密钥均由各端自行获取得到,避免了将密钥在服务端与客户端间进行传输而可能造成的密钥泄漏情况,上述方式的保密性和安全性更高。
本实施方式相对于现有技术而言,提供了获取服务端的密钥和客户端的密钥的方式,其中,服务端的密钥是根据动态更新的时间戳计算得到的,且服务端的密钥会下发至对应的客户端作为客户端的密钥,从而服务端在对客户端进行鉴权时,服务端计算出的加密串和接收到的客户端的加密串能够一致,也就是服务端能够判定客户端的鉴权消息合法;另外,由于密钥是根据动态更新的时间戳计算得到的,动态更新的时间戳有效提升了密钥的动态性和使用密钥进行信息交互过程中的安全性,降低了密钥被暴力破解的可能性。
本发明第三实施方式涉及一种长连接鉴权方法,本实施方式与第一实施方式大致相同,本发明第三实施方式中,设置了等待接收客户端的鉴权消息的等待时长,并对强制断开长连接的客户端进行了后续处理。本实施方式中的长连接鉴权方法如图4所示,下面对图4的流程做具体说明:
步骤301,判断在预设等待时段内是否接收到已建立长连接的客户端发送的鉴权消息;若是,执行步骤302;若否,执行步骤303。
具体地说,服务端在保持与客户端建立长连接的情况下,定时接收到客户端发送的符合预先定义的信息传输格式的心跳信息,同时等待接收客户端发送的鉴权消息;可以理解为,服务端在立刻收到刚建立长连接的客户端立刻发送的心跳信息后,定时再次接收到了客户端发送的心跳信息,则服务端进入等待鉴权消息的状态,同时也等待再次定时接收到客户端发送的心跳信息,等待的时间维持一个预设等待时长;若在预设等待时长内,服务端接收到了客户端发送的鉴权消息,则执行步骤302进行长连接鉴权;若在预设等待时长内,服务端未接收到客户端发送的鉴权消息,则执行步骤303,断开与客户端的长连接,从而避免了因服务端无限制等待鉴权消息时造成的服务端资源消耗,有利于服务端及时断开与非法客户端的长连接。可以理解的是,服务端可以在预设等待时长内,不响应除了心跳信息和鉴权消息以外的信息,而是在对客户端的长连接鉴权通过后,再进行其他信息的交互。
在一个实例中,服务端的等待鉴权消息的状态维持20秒,若在20秒内服务端接收到了客户端的鉴权消息,并判定鉴权消息合法,则退出等待鉴权消息的状态;若在20秒内服务端未接收到客户端的鉴权消息,则强制断开与客户端的长连接。
步骤302,根据客户端的加密串,判断接收到的鉴权消息是否合法;若否,执行步骤303;若是,执行步骤104。此步骤与步骤102大致相同,此处不再赘述。
步骤303,断开与客户端的长连接。此步骤与步骤103大致相同,此处不再赘述。
步骤304,保持与客户端的长连接。此步骤与步骤104大致相同,此处不再赘述。
在步骤303后,执行步骤305,将客户端判定为非法客户端,将客户端被判定为非法客户端的次数累加一次,并将客户端的网络地址记录为非法网络地址。
具体地说,服务端强制断开长连接的客户端即为服务端判定的非法客户端;服务端内记录客户端被判定为非法客户端的次数,当服务端强制断开某一客户端的长连接后,在服务端内将该客户端被判定为非法客户端的次数累加一次。
另外,服务端还将该被判定为非法客户端的客户端的网络地址(IP地址)记录为非法网络地址,从而当服务端内记录的该客户端被判定为非法客户端的次数超过预设阈值时,服务端将该非法网络地址加入黑名单,服务端在预设请求时长内拒绝通过该非法网络地址发送的请求,从而避免了因服务端被动接收非法客户端的请求而造成的服务端的资源占用风险和浪费。在一个实例中,当客户端A被服务端判定为非法客户端的次数超过预设的20次时,服务端将客户端A的IP地址加入黑名单,服务端在24小时内拒绝通过客户端A的IP地址发送的请求。
本实施方式相对于现有技术而言,服务端判断在预设等待时段内是否接收到已建立长连接的客户端发送的鉴权消息,若在预设等待时间段内未接收到已建立长连接的客户端发送的鉴权消息,则断开与客户端的长连接,从而避免了因服务端无限制等待鉴权消息时造成的服务端资源消耗,有利于服务端及时断开与非法客户端的长连接;在服务端断开与客户端的长连接后,将客户端判定为非法客户端,将客户端被判定为非法客户端的次数累加一次;另外,服务端还将非法客户端的网络地址记录为非法网络地址,当客户端被判定为非法客户端的次数超过预设阈值时,在预设请求时长内拒绝通过非法网络地址发送的请求,也就是拒绝该非法客户端发送的请求,避免了因被动接收非法客户端的请求而造成的服务端的资源占用风险和浪费。
本发明第四实施方式涉及一种长连接鉴权装置,如图5所示,包括:鉴权消息接收模块401,鉴权消息判断模块402和客户端处理模块403。
鉴权消息接收模块401,用于判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;
鉴权消息判断模块402,用于在接收到已建立长连接的客户端发送的鉴权消息后,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;
客户端处理模块403,用于在所述鉴权消息不合法时,断开与所述客户端的长连接。
在一个实例中,所述鉴权消息中还包括所述客户端的标识信息,所述客户端的加密串根据所述客户端的标识信息和客户端的密钥计算得到;所述鉴权消息判断模块402根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法,包括:根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串;判断所述客户端的加密串和所述服务端的加密串是否一致;若不一致,判定所述鉴权消息不合法。
在一个实例中,所述服务端的密钥通过以下方式得到:定时获取当前时间的时间戳;根据所述当前时间的时间戳和预设加密算法,计算动态密钥;根据所述动态密钥和预设获取规则,获取并更新所述服务端的密钥;在所述计算并更新所述服务端的密钥后,还包括:将所述动态密钥发送至所述服务端对应的客户端,供所述客户端根据所述动态密钥和所述预设获取规则,获取并更新所述客户端的密钥。
在一个实例中,所述客户端的标识信息,包括:所述客户端的机器码、所述客户端的编号和所述客户端发送的鉴权消息的时间戳;所述鉴权消息判断模块402根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串,包括:加密所述客户端的编号,得到所述客户端的编号加密串;拼接所述编号加密串和所述客户端的机器码,得到所述客户端的机器码字符串,加密所述机器码字符串,得到所述客户端的机器码加密串;拼接所述机器码加密串、所述客户端发送的鉴权消息的时间戳和所述编号加密串,得到所述客户端的时间戳字符串,加密所述时间戳字符串,得到所述客户端的时间戳加密串;拼接所述时间戳加密串和所述服务端的密钥,得到所述服务端字符串,加密所述服务端字符串,得到所述服务端的加密串。
在一个实例中,所述鉴权消息接收模块401判断是否接收到已建立长连接的客户端发送的鉴权消息,具体为:判断在预设等待时段内是否接收到已建立长连接的客户端发送的鉴权消息;所述客户端处理模块403还用于:若在预设等待时间段内未接收到已建立长连接的客户端发送的鉴权消息,则断开与所述客户端的长连接。
在一个实例中,在所述客户端处理模块403断开与所述客户端的长连接后,还用于:将所述客户端判定为非法客户端,并将所述客户端的网络地址记录为非法网络地址。
在一个实例中,在所述客户端处理模块403断开与所述客户端的长连接后,还用于:将所述客户端被判定为非法客户端的次数累加一次;当所述客户端被判定为非法客户端的次数超过预设阈值时,在预设请求时长内拒绝通过所述非法网络地址发送的请求。
不难发现,本实施方式为与第一实施方式、第二实施方式或第三实施方式的相对应装置的实施例,本实施方式可与第一实施方式、第二实施方式或第三实施方式互相配合实施,第一实施方式、第二实施方式或第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,此处不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第一实施方式、第二实施方式或第三实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第五实施方式涉及一种服务器,如图6所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述长连接鉴权方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器502的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述长连接鉴权方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种长连接鉴权方法,其特征在于,包括:
判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;
若接收到已建立长连接的客户端发送的鉴权消息,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;
若所述鉴权消息不合法,断开与所述客户端的长连接。
2.根据权利要求1所述的长连接鉴权方法,其特征在于,所述鉴权消息中还包括所述客户端的标识信息,所述客户端的加密串根据所述客户端的标识信息和客户端的密钥计算得到;
所述根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法,包括:
根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串;
判断所述客户端的加密串和所述服务端的加密串是否一致;若不一致,判定所述鉴权消息不合法。
3.根据权利要求2所述的长连接鉴权方法,其特征在于,所述服务端的密钥通过以下方式得到:
定时获取当前时间的时间戳;
根据所述当前时间的时间戳和预设加密算法,计算动态密钥;
根据所述动态密钥和预设获取规则,获取并更新所述服务端的密钥;
在所述计算并更新所述服务端的密钥后,还包括:
将所述动态密钥发送至所述服务端对应的客户端,供所述客户端根据所述动态密钥和所述预设获取规则,获取并更新所述客户端的密钥。
4.根据权利要求2所述的长连接鉴权算法,其特征在于,所述客户端的标识信息,包括:
所述客户端的机器码、所述客户端的编号和所述客户端发送的鉴权消息的时间戳;
所述根据所述客户端的标识信息和服务端的密钥,计算服务端的加密串,包括:
加密所述客户端的编号,得到所述客户端的编号加密串;
拼接所述编号加密串和所述客户端的机器码,得到所述客户端的机器码字符串,加密所述机器码字符串,得到所述客户端的机器码加密串;
拼接所述机器码加密串、所述客户端发送的鉴权消息的时间戳和所述编号加密串,得到所述客户端的时间戳字符串,加密所述时间戳字符串,得到所述客户端的时间戳加密串;
拼接所述时间戳加密串和所述服务端的密钥,得到所述服务端字符串,加密所述服务端字符串,得到所述服务端的加密串。
5.根据权利要求1所述的长连接鉴权方法,其特征在于,所述判断是否接收到已建立长连接的客户端发送的鉴权消息,具体为:
判断在预设等待时段内是否接收到已建立长连接的客户端发送的鉴权消息;
所述长连接鉴权方法,还包括:
若在预设等待时间段内未接收到已建立长连接的客户端发送的鉴权消息,则断开与所述客户端的长连接。
6.根据权利要求1或5中任一项所述的长连接鉴权方法,其特征在于,在所述断开与所述客户端的长连接后,还包括:将所述客户端判定为非法客户端,并将所述客户端的网络地址记录为非法网络地址。
7.根据权利要求6所述的长连接鉴权方法,其特征在于,在所述断开与所述客户端的长连接后,还包括:
将所述客户端被判定为非法客户端的次数累加一次;
当所述客户端被判定为非法客户端的次数超过预设阈值时,在预设请求时长内拒绝通过所述非法网络地址发送的请求。
8.一种长连接鉴权装置,其特征在于,包括:
鉴权消息接收模块,用于判断是否接收到已建立长连接的客户端发送的鉴权消息;其中,所述鉴权消息中包括所述客户端的加密串;
鉴权消息判断模块,用于在接收到已建立长连接的客户端发送的鉴权消息后,根据所述客户端的加密串,判断接收到的所述鉴权消息是否合法;
客户端处理模块,用于在所述鉴权消息不合法时,断开与所述客户端的长连接。
9.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的长连接鉴权方法。
10.一种计算机存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的长连接鉴权方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910772109.XA CN110602055A (zh) | 2019-08-21 | 2019-08-21 | 长连接鉴权方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910772109.XA CN110602055A (zh) | 2019-08-21 | 2019-08-21 | 长连接鉴权方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110602055A true CN110602055A (zh) | 2019-12-20 |
Family
ID=68854838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910772109.XA Pending CN110602055A (zh) | 2019-08-21 | 2019-08-21 | 长连接鉴权方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110602055A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111614752A (zh) * | 2020-05-19 | 2020-09-01 | 北京百度网讯科技有限公司 | 用于数据传输的方法和装置 |
CN112202792A (zh) * | 2020-09-30 | 2021-01-08 | 京东数字科技控股股份有限公司 | 客户端与服务器建立长连接的、通信方法及装置 |
CN113542324A (zh) * | 2020-04-17 | 2021-10-22 | 北京京东振世信息技术有限公司 | 一种消息推送方法和装置 |
CN114866303A (zh) * | 2022-04-26 | 2022-08-05 | 武昌理工学院 | 一种防劫持的探测信号鉴权方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281408A (zh) * | 2013-05-14 | 2013-09-04 | 福建星网锐捷安防科技有限公司 | 一种反向注册穿透网络的方法 |
CN106230587A (zh) * | 2016-08-05 | 2016-12-14 | 浪潮软件股份有限公司 | 一种长连接防重放攻击的方法 |
US20170257280A1 (en) * | 2015-01-29 | 2017-09-07 | Blackrock Institutional Trust Company, N.A. | Reliably Updating a Messaging System |
CN107819768A (zh) * | 2017-11-15 | 2018-03-20 | 厦门安胜网络科技有限公司 | 服务端主动断开非法长连接的方法、终端设备及存储介质 |
CN109040188A (zh) * | 2018-07-03 | 2018-12-18 | 四川斐讯信息技术有限公司 | 一种智能音箱的音频处理方法及*** |
-
2019
- 2019-08-21 CN CN201910772109.XA patent/CN110602055A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281408A (zh) * | 2013-05-14 | 2013-09-04 | 福建星网锐捷安防科技有限公司 | 一种反向注册穿透网络的方法 |
US20170257280A1 (en) * | 2015-01-29 | 2017-09-07 | Blackrock Institutional Trust Company, N.A. | Reliably Updating a Messaging System |
CN106230587A (zh) * | 2016-08-05 | 2016-12-14 | 浪潮软件股份有限公司 | 一种长连接防重放攻击的方法 |
CN107819768A (zh) * | 2017-11-15 | 2018-03-20 | 厦门安胜网络科技有限公司 | 服务端主动断开非法长连接的方法、终端设备及存储介质 |
CN109040188A (zh) * | 2018-07-03 | 2018-12-18 | 四川斐讯信息技术有限公司 | 一种智能音箱的音频处理方法及*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113542324A (zh) * | 2020-04-17 | 2021-10-22 | 北京京东振世信息技术有限公司 | 一种消息推送方法和装置 |
CN113542324B (zh) * | 2020-04-17 | 2024-06-21 | 北京京东振世信息技术有限公司 | 一种消息推送方法和装置 |
CN111614752A (zh) * | 2020-05-19 | 2020-09-01 | 北京百度网讯科技有限公司 | 用于数据传输的方法和装置 |
CN112202792A (zh) * | 2020-09-30 | 2021-01-08 | 京东数字科技控股股份有限公司 | 客户端与服务器建立长连接的、通信方法及装置 |
CN114866303A (zh) * | 2022-04-26 | 2022-08-05 | 武昌理工学院 | 一种防劫持的探测信号鉴权方法 |
CN114866303B (zh) * | 2022-04-26 | 2023-05-26 | 武昌理工学院 | 一种防劫持的探测信号鉴权方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111556025B (zh) | 基于加密、解密操作的数据传输方法、***和计算机设备 | |
CN110602055A (zh) | 长连接鉴权方法、装置、服务器及存储介质 | |
CN102195957B (zh) | 一种资源共享方法、装置及*** | |
CN106790223B (zh) | 一种数据传输的方法和设备及其*** | |
JP7421771B2 (ja) | Iotサービスを実施するための方法、アプリケーションサーバ、iot装置および媒体 | |
CN111049803A (zh) | 基于车载can总线通讯***数据加密及平台安全访问的方法 | |
CN109729000B (zh) | 一种即时通信方法及装置 | |
US20220417015A1 (en) | Key update method and related apparatus | |
CN112671735B (zh) | 一种基于区块链和重加密的数据加密分享***及方法 | |
CN112669104B (zh) | 租赁设备的数据处理方法 | |
US10419212B2 (en) | Methods, systems, apparatuses, and devices for securing network communications using multiple security protocols | |
CN113515766A (zh) | 文件传输方法及装置 | |
CN113890730A (zh) | 数据传输方法及*** | |
CN112968910A (zh) | 一种防重放攻击方法和装置 | |
CN114142995B (zh) | 面向区块链中继通信网络的密钥安全分发方法及装置 | |
CN111885057B (zh) | 消息中间件访问方法、装置、设备及存储介质 | |
CN112738037B (zh) | 一种数据加密通信方法 | |
CN106487761B (zh) | 一种消息传输方法和网络设备 | |
CN110830421B (zh) | 数据传输方法和设备 | |
CN116055141A (zh) | 数据安全传输方法、***、装置及存储介质 | |
CN112242976B (zh) | 一种身份认证方法及装置 | |
US20050108528A1 (en) | Computer network and method for transmitting and authenticating data in the computer network | |
CN109445328B (zh) | 核电站仪控***的防止重放攻击方法和装置 | |
CN112995140A (zh) | 安全管理***及方法 | |
CN111083129A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191220 |