CN112788036B - 身份验证方法及装置 - Google Patents

身份验证方法及装置 Download PDF

Info

Publication number
CN112788036B
CN112788036B CN202110044970.1A CN202110044970A CN112788036B CN 112788036 B CN112788036 B CN 112788036B CN 202110044970 A CN202110044970 A CN 202110044970A CN 112788036 B CN112788036 B CN 112788036B
Authority
CN
China
Prior art keywords
user
secret key
key
authentication token
character string
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
Application number
CN202110044970.1A
Other languages
English (en)
Other versions
CN112788036A (zh
Inventor
刘松
杨猛
蔡雨佳
王路远
马南
贾韶光
李超
刘皓
于灏
欧创新
孟庆峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peoples Insurance Company of China
Original Assignee
Peoples Insurance Company of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peoples Insurance Company of China filed Critical Peoples Insurance Company of China
Priority to CN202110044970.1A priority Critical patent/CN112788036B/zh
Publication of CN112788036A publication Critical patent/CN112788036A/zh
Application granted granted Critical
Publication of CN112788036B publication Critical patent/CN112788036B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0872Generation of secret information including derivation or calculation of cryptographic keys or passwords using geo-location information, e.g. location data, time, relative position or proximity to other entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/321Cryptographic 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 a third party or a trusted authority
    • H04L9/3213Cryptographic 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 a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN

Abstract

本申请实施例公开了一种身份验证方法及装置,其中,所述身份验证方法包括:微服务网关接收第一用户发送的携带有认证令牌的访问请求,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;所述微服务网关在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;所述微服务网关在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。采用本申请实施例,可以保障对微服务访问的合法性,保证服务安全性。

Description

身份验证方法及装置
技术领域
本申请实施例涉及微服务技术领域,尤其涉及一种身份验证方法及装置。
背景技术
微服务架构是一种架构概念,微服务架构模式将一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。微服务架构围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。
目前,微服务架构在互联网领域被广泛应用,以用于处理亿万级高并发下的用户请求,从而保证业务的正常运行。企业应用中若要加强服务调用管控,则对微服务的调用方系统的身份验证核实显得尤其重要,但是,目前的开源的微服务网关中并没有身份验证功能,从而无法保障对微服务架构内部各微服务访问的合法性,影响了服务安全性。
发明内容
本申请实施例提供一种身份验证方法及装置,旨在解决现有的开源的微服务网关中没有身份验证功能的问题,从而保障对微服务架构内部各微服务访问的合法性,保证服务安全性。
本申请实施例采用下述技术方案:
第一方面,本申请实施例提供一种身份验证方法,所述方法包括:
微服务网关接收第一用户发送的携带有认证令牌的访问请求,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;所述微服务网关在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;所述微服务网关在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
第二方面,本申请实施例提供一种身份验证装置,应用于微服务网关,所述装置包括:
接收模块,用于接收第一用户发送的携带有认证令牌的访问请求,其接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;获取模块,用于在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;生成模块,用于基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;验证模块,用于在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
第三方面,本申请实施例提供一种身份验证方法,所述方法包括:
秘钥服务端接收来自微服务网关的请求;所述秘钥服务端响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
第四方面,本申请实施例提供一种身份验证装置,应用于秘钥服务端,所述装置包括:
接收模块,用于接收来自微服务网关的请求;发送模块,用于响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
第五方面,本申请实施例提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收第一用户发送的携带有认证令牌的访问请求,其中,接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
第六方面,本申请实施例提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收来自微服务网关的请求;响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收第一用户发送的携带有认证令牌的访问请求,其中,接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
第八方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收来自微服务网关的请求;响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
本申请实施例采用的上述至少一个技术方案能够达到以下技术效果:
本申请实施例中,微服务网关可以接收任一用户即第一用户发送的携带有认证令牌的对任一微服务的访问请求,且当接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。进一步地,各访问请求携带的认证令牌中包含各自对应的秘钥标识、时间戳、随机数和用户签名,其中,微服务网关可以在该认证令牌有效时,基于该秘钥标识查询确定与其对应的秘钥,进而基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与所述用户签名进行比对的待验证用户签名,若比对一致,则可以得出基于当前访问请求中携带的有效的认证令牌对第一用户的身份验证通过的结论,认证效率高。
附图说明
此处所说明的附图用来提供对本申请实施例的进一步理解,构成本申请实施例的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请实施例的不当限定。在附图中:
图1为本申请实施例提供的一种身份验证方法的流程示意图;
图2为本申请实施例提供的另一种身份验证方法的流程示意图;
图3为本申请实施例提供的一种面向微服务架构的身份验证系统示意图;
图4为本申请实施例提供的一种身份验证装置的结构示意图;
图5为本申请实施例提供的另一种身份验证装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
参见图1所示,本申请实施例提供一种身份验证方法,该方法可包括如下内容:
步骤101:微服务网关接收第一用户发送的携带有认证令牌的访问请求,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
可选的,上述第一用户可以指任一对微服务网关对应的微服务有访问需求的用户。上述各访问请求具体可以为超文本传输协议(HyperText Transfer Protocol,HTTP)请求。
步骤103:所述微服务网关在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识(Identifier,ID)确定所述秘钥标识对应的秘钥。
步骤105:所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名。
步骤107:所述微服务网关在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
本申请实施例中,微服务网关可以接收任一用户即第一用户发送的携带有认证令牌的对任一微服务的访问请求,且当接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。进一步地,各访问请求携带的认证令牌中包含各自对应的秘钥标识、时间戳、随机数和用户签名,其中,微服务网关可以在该认证令牌有效时,基于该秘钥标识查询确定与其对应的秘钥,进而基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与所述用户签名进行比对的待验证用户签名,若比对一致,则可以得出基于当前访问请求中携带的有效的认证令牌对第一用户的身份验证通过的结论,认证效率高。
可选的,在本申请实施例的身份验证方法中,当接收到来自该第一用户的多个访问请求时,多个访问请求分别携带不同的认证令牌即该多个访问请求中携带的认证令牌两两不同,可以具体表现为所述多个访问请求对应的多个认证令牌中任意两个认证令牌中的以下至少一项不同:随机数、时间戳和用户签名。也就是说,通过使得每次访问请求携带的认证令牌中的随机数、时间戳和用户签名中的至少一个不同,来区分不同的认证令牌。其中,每个认证令牌中的秘钥标识、随机数、时间戳和用户签名之间具有一一对应的关系。
可选的,所述认证令牌中的时间戳为生成该认证令牌的时间。
可选的,在本申请实施例的身份验证方法中,可以基于认证令牌中的时间戳对认证令牌是否有效进行验证,以在保障认证令牌动态可变的同时具有时效性。也就是说,上述步骤103,在获取所述认证令牌中的密钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥之前,还可以包括以下内容:
获取所述认证令牌中的时间戳;若检测到所述认证令牌的时间戳在预设时间范围内,则确认所述认证令牌有效,否则确认所述认证令牌无效。
可选的,上述预设时间范围可以基于微服务网关接收到认证令牌的第一时刻设置,比如以该第一时刻为基础分别按时间正序、倒序取一段时长后得到该预设时间范围,比如取接收到认证令牌的第一时刻的前后n分钟,比如5分钟,作为预设时间范围。进一步地,若认证令牌中的时间戳在该第一时刻的前后n分钟以内,则认为其有效,否则认为是无效的认证令牌。
进一步可选的,在本申请实施例的身份验证方法中,在确认所述认证令牌无效的情况下,可以直接拒绝第一用户当前的访问请求。
进一步可选的,在本申请实施例的身份验证方法中,还可以包括以下内容:
所述微服务网络在所述待验证用户签名与所述认证令牌中的用户签名不同的情况下,确定对所述第一用户的身份验证失败。
可选的,在本申请实施例的身份验证方法中,可以通过如下过程生成待验证用户签名:
所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数,生成第一字符串;所述微服务网关对所述秘钥和所述第一字符串进行HMAC-MD5运算,生成所述待验证用户签名。
在该实施例中,通过采用与认证令牌中的用户签名关联的秘钥标识和时间戳、随机数,以及该秘钥标识绑定的秘钥,进行用于生成认证令牌中的用户签名的HMAC-MD5运算,则可以得到用于与该认证令牌中的用户签名进行一致性比对的待验证用户签名,其中,秘钥字段既作为经拼接形成的第一字符串的一部分,也作为HMAC-MD5运算的一个秘钥参数。
需要说明的是,本申请实施例的身份验证方法中,待验证用户签名与各认证令牌中的用户签名的生成方式是一致的,也就是说,使用相同的秘钥标识、秘钥和时间戳、随机数,采用相同的HMAC-MD5算法进行处理,从而可以通过将二者进行比对确定是否相同的方式,确定对用户的身份验证是否通过,认证效率高。其中,HMAC算法是一种基于Hash函数和密钥进行消息认证的方法,通过这个算法可以保证通信双方之前交互的消息来自对方并且没有被篡改,既可以保证消息不被篡改,也能认证信源身份,而HMAC-MD5算法为HMAC算法的一个特例,即用MD 5作为HMAC的Hash函数。
可选的,在本申请实施例的身份验证方法中,在上述步骤103之前,还可以包括以下内容:
所述微服务网关从秘钥服务端获取所述第一用户对应的所述秘钥标识和所述秘钥。也就是说,通过向秘钥服务端请求任一用户即第一用户对应的秘钥标识和秘钥对,并存储在微服务网关本地,以保持与微服务网关间的数据同步,同时还可以提高查询确定与认证令牌中的秘钥标识绑定的秘钥的效率。
需要说明是的是,在本申请实施例的身份验证方法中,从节省微服务网关本地的存储空间的角度考虑,且各合规用户对应的秘钥标识和秘钥是一一对应的,则微服务网关本地也可以不存储各合规用户对应的秘钥标识和秘钥对,如此,在获取到各认证令牌中的秘钥标识时,可以通过向秘钥服务端发送查询请求的方式,查询确定与该第一用户对应的秘钥标识绑定的秘钥。
可选的,上述第一用户对应的所述秘钥标识可以由所述秘钥服务端基于以下过程生成:
所述秘钥服务端对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;所述秘钥服务端在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;所述秘钥服务端在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;所述秘钥服务端在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识。
可选的,上述目标对象可以包括随机数字或字母。
可选的,上述第一用户对应的与所述秘钥标识对应的所述秘钥可以由所述秘钥服务端基于以下过程生成:
所述秘钥服务端对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;所述秘钥服务端将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;所述秘钥服务端从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;所述秘钥服务端对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
进一步可选的,上述多个字节中的每个字节中包含中间变量中相同位数的变量,即通过对所述中间变量进行平均划分的形式得到所述多个字节。
参见图2所示,本申请实施例提供了另一种身份验证方法,该方法可包括如下内容:
步骤201:秘钥服务端接收来自微服务网关的请求。
步骤203:所述秘钥服务端响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
本申请实施例中,秘钥服务端可以基于微服务网关的请求向其反馈任一用户即第一用户对应的秘钥标识和秘钥,以保持与微服务网关间的数据同步。其中,通过向微服务网关提供第一用户对应的秘钥标识和秘钥,可以使得微服务网关在接收到来自该用户的携带有认证令牌的对任一微服务的访问请求时,基于当前访问请求携带的有效的认证令牌中的秘钥标识以及本地同步的该第一用户对应的上述秘钥标识和秘钥对,确定与认证令牌中的秘钥标识对应的秘钥,进一步可以使得微服务网关基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与认证令牌中的用户签名进行比对的待验证用户签名,从而确定对该第一用户的身份验证是否通过,认证效率高。其中,对于微服务网关而言,当其接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。
需要说明的是,微服务网关根据所述第一用户对应的秘钥、秘钥标识和动态可变的认证令牌,生成待验证用户签名以及实现对该用户的身份验证等的过程,与上述图1对应的身份验证方法中的相应内容相同,在此不再赘述。
可选的,在本申请实施例的身份验证方法中,在上述步骤203之前,还可以通过如下过程生成各用户对应的秘钥标识:
所述秘钥服务端对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;所述秘钥服务端在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;所述秘钥服务端在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;所述秘钥服务端在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识。
可选的,上述目标对象可以包括随机数字或字母。
可选的,在本申请实施例的身份验证方法中,在上述步骤203之前,还可以通过如下过程生成各用户与对应的秘钥标识对应的秘钥:
所述秘钥服务端对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;所述秘钥服务端将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;所述秘钥服务端从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;所述秘钥服务端对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
进一步可选的,上述多个字节中的每个字节中包含中间变量中相同位数的变量,即通过对所述中间变量进行平均划分的形式得到所述多个字节。
在本申请实施例中,每个秘钥都有一个秘钥标识ID,秘钥标识经过私有算法推演生成秘钥。在一个具体示例中,首先生成一个128位(相当于上述第一长度)二进制随机数作为秘钥ID的种子,并将其进行BASE64运算,并将运算结果中的末两位“=”(若存在)去掉后得到长度为22的中间字符串(相当于上述第三字符串)。考虑到,秘钥ID是需要在报文中传输的,而标准的BASE64可能会包含“/”和/或“+”字符,并不适合直接放在http报文里传输,因此,可以将22的中间字符串中的每个“/”和“+”替换成一个随机数字或者字母(相当于上述目标对象)。比如,由32个16进制数组成128位二进制随机数63df8753-a433-4223-ace8-2d08f893d8fb,进行BASE64运算并去除末两位的“=”后,得到22位中间字符串Y9+HU6QzQiOs6C0I+JPY+w,进一步将该中间字符串中的“+”替换为随机数字或字母后得到秘钥id即Y9QHU6QzQiOs6C0I5JPYcw。
进一步地,对秘钥ID进行SHA256操作,得出长度256位的二进制数作为中间变量。将256位中间变量中每8位合成一个字节,组成一个长度为32(相当于上述第三长度)的字节数组(相当于上述第一字节数组)。取该字节数组的后16位(相当于上述具有第四长度的第二字节数组)进行BASE64操作,得出24位长的字符串(相当于上述第四字符串),该字符串被用作秘钥。接上例,对秘钥id即Y9QHU6QzQiOs6C0I5JPYcw一次进行上述处理,可以得到24位的字符串UhV+ZdTQRkfs6MHXXLQu0g==,即该秘钥id对应的秘钥。
参见图3,本申请实施例提供一种面向微服务架构的身份验证系统,秘钥服务端301(也可以称为密码中心)负责生成秘钥及其对应的秘钥ID并且保存在本地。秘钥服务端301向微服务访问方(相当于上述第一用户,或者可以称为微服务网关303的访问方)的管理员提供查看秘钥ID与秘钥的界面。该管理员负责为微服务访问方配置秘钥相关信息。微服务网关303与秘钥服务端301保持秘钥数据同步。
其中,每个秘钥都有一个秘钥标识ID,秘钥标识经过私有算法推演生成秘钥。密钥中心可以通过如下过程生成秘钥标识和秘钥:首先生成一个128位(相当于上述第一长度)二进制随机数作为秘钥ID的种子,并将其进行BASE64运算,并将运算结果中末两位“=”(若存在)去掉后生成长度为22的中间字符串(相当于上述第三字符串)。考虑到,秘钥ID是需要在报文中传输的,而标准的BASE64可能会包含“/”和/或“+”字符,并不适合直接放在http报文里传输,因此,可以将22的中间字符串中的每个“/”和“+”替换成一个随机数字或者字母(相当于上述目标对象)。进一步地,对秘钥ID进行SHA256操作,得出长度256位的二进制数作为中间变量。将256位中间变量每8位合成一个字节,组成一个长度为32(相当于上述第三长度)的字节数组。取字节数组的后16位(相当于上述第四长度)进行BASE64操作,得出24位长的字符串(相当于上述第四字符串),该字符串被用作秘钥。
秘钥服务端301生成一对秘钥ID和秘钥后,微服务访问方在配置文件或者启动参数中配置自己的秘钥ID与秘钥。微服务网关303启动时从秘钥服务端301获取所有合规微服务访问方的秘钥ID与秘钥。
微服务访问方向微服务网关303发送请求时,在HTTP请求头中携带认证令牌。认证令牌由3部分信息组成,分别是秘钥ID、一个每次不同的随机数、一个每次不同的时间戳和一个每次不同的访问方签名(相当于用户签名),即认证令牌为动态变化的,如此可以使得认证算法运算效率更高。访问方签名生成的算法是:对秘钥ID、秘钥、随机数和时间戳拼接,得到拼接的字符串,然后将秘钥和该拼接的字符串(即秘钥ID、秘钥、随机数和时间戳拼接而成的字符串)进行HMAC-MD5运算,也就是说秘钥字段既作为拼接的字符串的一部分,也作为HMAC-MD5运算的一个秘钥参数,HMAC-MD5运算的结果形成访问方签名。
微服务网关303做身份验证时,取出HTTP请求中携带的认证令牌中的时间戳即HTTP请求的发送时间戳,并检测该时间戳是否在当前时刻前后n分钟以内(相当于预设时间范围),其中,n为正整数,视具体情况进行取值,比如可以取为3或5等,在此不作具体限定。如果不在这个范围即n分钟内,认为是无效的认证令牌,访问被拒绝。如果在这个范围,则认为是有效的认证令牌,微服务网关303取出认证令牌中的秘钥ID字段。根据秘钥ID,查询出对应的秘钥。然后拼接秘钥ID、秘钥、HTTP请求中携带的认证令牌中的随机数、时间戳,形成拼接的字符串后,也对秘钥和该拼接的字符串(即秘钥ID、秘钥、HTTP请求中携带的认证令牌中的随机数和时间戳拼接而成的字符串)进行HMAC-MD5运算;也就是说秘钥字段既作为拼接的字符串的一部分,也作为HMAC-MD5运算的一个秘钥参数。如此,在微服务网关303中进行HMAC-MD5运算后,也得出一个签名(相当于上述待验证用户签名)。由于微服务网关303与微服务访问方使用了相同的签名字符串与签名算法,微服务网关303将得出与微服务访问方相同的签名。微服务网关303将算出的签名与HTTP请求携带的认证令牌中的签名进行比对,如果比对是一致的,这代表微服务访问方使用了与微服务网关303相同的秘钥ID和秘钥,即认为微服务访问方身份合法,身份认证通过。
认证过程中生成签名采用HMAC-MD5运算,该运算较快。微服务网关303采用该方法进行身份认证,整个运算效率高。
本申请实施例还提供一种身份验证装置,应用于微服务网关,参见图4所示,该装置400可具体包括:接收模块401、获取模块403、生成模块405和验证模块407。
其中,所述接收模块401,用于接收第一用户发送的携带有认证令牌的访问请求,其接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;所述获取模块403,用于在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;所述生成模块405,用于基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;所述验证模块407,用于在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
可选的,本申请实施例的身份验证装置400,还可以包括:处理模块。
其中,上述获取模块403,具体还可以用于:在所述获取所述认证令牌中的密钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥之前,获取所述认证令牌中的时间戳;上述处理模块,用于若检测到所述认证令牌的时间戳在预设时间范围内,则确认所述认证令牌有效,否则确认所述认证令牌无效。
可选的,在本申请实施例的身份验证装置400中,上述多个访问请求对应的多个认证令牌中任意两个认证令牌中的以下至少一项不同:随机数、时间戳和用户签名。
可选的,本申请实施例的身份验证装置400,上述生成模块405,具体可以用于:
基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数,生成第一字符串;对所述秘钥和所述第一字符串进行HMAC-MD5运算,生成所述待验证用户签名。
可选的,本申请实施例的身份验证装置400,上述获取模块403,在所述微服务网关在所述认证令牌中有效的情况下,获取所述认证令牌中的所述秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的所述秘钥之前,还可以用于:
从秘钥服务端获取所述第一用户对应的所述秘钥标识和所述秘钥。
能够理解,本申请实施例提供的身份验证装置,能够实现前述实施例中提供的身份验证方法,关于身份验证方法的相关阐释均适用于身份验证装置,此处不再赘述。
本申请实施例中,微服务网关可以接收任一用户即第一用户发送的携带有认证令牌的对任一微服务的访问请求,且当接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。进一步地,各访问请求携带的认证令牌中包含各自对应的秘钥标识、时间戳、随机数和用户签名,其中,微服务网关可以在该认证令牌有效时,基于该秘钥标识查询确定与其对应的秘钥,进而基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与所述用户签名进行比对的待验证用户签名,若比对一致,则可以得出基于当前访问请求中携带的有效的认证令牌对第一用户的身份验证通过的结论,认证效率高。
本申请实施例还提供一种身份验证装置,应用于秘钥服务端,参见图5所示,该装置500可具体包括:接收模块501和发送模块503。
其中,所述接收模块501,用于接收来自微服务网关的请求;所述发送模块503,用于响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
可选的,本申请实施例的身份验证装置500,还可以包括处理模块,所述处理模块在所述发送模块503响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥之前,具体可以用于:
对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识。
可选的,在本申请实施例的身份验证装置400中,上述处理模块在所述发送模块503响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥之前,具体还可以用于:
对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
能够理解,本申请实施例提供的身份验证装置,能够实现前述实施例中提供的身份验证方法,关于身份验证方法的相关阐释均适用于身份验证装置,此处不再赘述。
本申请实施例中,可以基于微服务网关的请求向其反馈任一用户即第一用户对应的秘钥标识和秘钥,以保持与微服务网关间的数据同步。其中,通过向微服务网关提供第一用户对应的秘钥标识和秘钥,可以使得微服务网关在接收到来自该用户的携带有认证令牌的对任一微服务的访问请求时,基于当前访问请求携带的有效的认证令牌中的秘钥标识以及本地同步的该第一用户对应的上述秘钥标识和秘钥对,确定与认证令牌中的秘钥标识对应的秘钥,进一步可以使得微服务网关基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与认证令牌中的用户签名进行比对的待验证用户签名,从而确定对该第一用户的身份验证是否通过,认证效率高。其中,对于微服务网关而言,当其接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。
图6是本申请的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成身份验证装置。
可选的,在一个实施例中,当所述电子设备用于实现微服务网关的功能时,处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收第一用户发送的携带有认证令牌的访问请求,其中,接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
本申请实施例中,微服务网关可以接收任一用户即第一用户发送的携带有认证令牌的对任一微服务的访问请求,且当接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。进一步地,各访问请求携带的认证令牌中包含各自对应的秘钥标识、时间戳、随机数和用户签名,其中,微服务网关可以在该认证令牌有效时,基于该秘钥标识查询确定与其对应的秘钥,进而基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与所述用户签名进行比对的待验证用户签名,若比对一致,则可以得出基于当前访问请求中携带的有效的认证令牌对第一用户的身份验证通过的结论,认证效率高。
可选的,在另一个实施例中,处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收来自微服务网关的请求;响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
本申请实施例中,可以基于微服务网关的请求向其反馈任一用户即第一用户对应的秘钥标识和秘钥,以保持与微服务网关间的数据同步。其中,通过向微服务网关提供第一用户对应的秘钥标识和秘钥,可以使得微服务网关在接收到来自该用户的携带有认证令牌的对任一微服务的访问请求时,基于当前访问请求携带的有效的认证令牌中的秘钥标识以及本地同步的该第一用户对应的上述秘钥标识和秘钥对,确定与认证令牌中的秘钥标识对应的秘钥,进一步可以使得微服务网关基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与认证令牌中的用户签名进行比对的待验证用户签名,从而确定对该第一用户的身份验证是否通过,认证效率高。其中,对于微服务网关而言,当其接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。
上述如本申请图1或图2所示实施例揭示的身份验证装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1或图2中身份验证装置执行的方法,并实现身份验证装置在图1或图2所示实施例的功能,本申请实施例在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中身份验证装置执行的方法,并具体用于执行:
接收第一用户发送的携带有认证令牌的访问请求,其中,接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过。
本申请实施例中,微服务网关可以接收任一用户即第一用户发送的携带有认证令牌的对任一微服务的访问请求,且当接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。进一步地,各访问请求携带的认证令牌中包含各自对应的秘钥标识、时间戳、随机数和用户签名,其中,微服务网关可以在该认证令牌有效时,基于该秘钥标识查询确定与其对应的秘钥,进而基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与所述用户签名进行比对的待验证用户签名,若比对一致,则可以得出基于当前访问请求中携带的有效的认证令牌对第一用户的身份验证通过的结论,认证效率高。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图2所示实施例中身份验证装置执行的方法,并具体用于执行:
接收来自微服务网关的请求;响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌。
本申请实施例中,可以基于微服务网关的请求向其反馈任一用户即第一用户对应的秘钥标识和秘钥,以保持与微服务网关间的数据同步。其中,通过向微服务网关提供第一用户对应的秘钥标识和秘钥,可以使得微服务网关在接收到来自该用户的携带有认证令牌的对任一微服务的访问请求时,基于当前访问请求携带的有效的认证令牌中的秘钥标识以及本地同步的该第一用户对应的上述秘钥标识和秘钥对,确定与认证令牌中的秘钥标识对应的秘钥,进一步可以使得微服务网关基于该秘钥标识、秘钥以及时间戳、随机数生成一个用于与认证令牌中的用户签名进行比对的待验证用户签名,从而确定对该第一用户的身份验证是否通过,认证效率高。其中,对于微服务网关而言,当其接收到来自该用户的多个访问请求时,该多个访问请求中携带的认证令牌两两不同,也就是说,来自该用户的每次访问请求所携带的认证令牌是动态变化的,如此,相较于采用访问请求中不变化的认证令牌,可以降低认证令牌被窃取的概率,安全性更高。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请实施例的权利要求范围之内。

Claims (8)

1.一种身份验证方法,其特征在于,所述方法包括:
微服务网关接收第一用户发送的携带有认证令牌的访问请求,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;
所述微服务网关在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;
所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;
所述微服务网关在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过;
其中,第一用户对应的所述秘钥标识由秘钥服务端基于以下过程生成:
所述秘钥服务端对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;所述秘钥服务端在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;所述秘钥服务端在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;所述秘钥服务端在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识;
所述秘钥服务端对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;所述秘钥服务端将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;所述秘钥服务端从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;所述秘钥服务端对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述认证令牌中的密钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥的步骤之前,所述方法还包括:
获取所述认证令牌中的时间戳;
若检测到所述认证令牌的时间戳在预设时间范围内,则确认所述认证令牌有效,否则确认所述认证令牌无效。
3.根据权利要求1所述的方法,其特征在于,所述多个访问请求对应的多个认证令牌中任意两个认证令牌中的以下至少一项不同:随机数、时间戳和用户签名。
4.根据权利要求1所述的方法,其特征在于,所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数,生成所述待验证用户签名的步骤,包括:
所述微服务网关基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数,生成第一字符串;
所述微服务网关对所述秘钥和所述第一字符串进行HMAC-MD5运算,生成所述待验证用户签名。
5.根据权利要求1所述的方法,其特征在于,在所述微服务网关在所述认证令牌中有效的情况下,获取所述认证令牌中的所述秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的所述秘钥之前,所述方法还包括:
所述微服务网关从秘钥服务端获取所述第一用户对应的所述秘钥标识和所述秘钥。
6.一种身份验证方法,其特征在于,所述方法包括:
秘钥服务端接收来自微服务网关的请求;
所述秘钥服务端响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;
其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳、随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;
在所述秘钥服务端响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥的步骤之前,所述方法还包括:
所述秘钥服务端对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;
所述秘钥服务端在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;
所述秘钥服务端在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;
所述秘钥服务端在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识;
所述秘钥服务端对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;
所述秘钥服务端将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;
所述秘钥服务端从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;
所述秘钥服务端对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
7.一种身份验证装置,应用于微服务网关,其特征在于,所述装置包括:
接收模块,用于接收第一用户发送的携带有认证令牌的访问请求,其接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;
获取模块,用于在所述认证令牌有效的情况下,获取所述认证令牌中的秘钥标识,并基于所述秘钥标识确定所述秘钥标识对应的秘钥;
生成模块,用于基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数,生成待验证用户签名;
验证模块,用于在所述待验证用户签名与所述认证令牌中的用户签名相同的情况下,确定对所述第一用户的身份验证通过;
其中,第一用户对应的所述秘钥标识由秘钥服务端基于以下过程生成:
所述秘钥服务端对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;所述秘钥服务端在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;所述秘钥服务端在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;所述秘钥服务端在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识;
所述秘钥服务端对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;所述秘钥服务端将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;所述秘钥服务端从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;所述秘钥服务端对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
8.一种身份验证装置,应用于秘钥服务端,其特征在于,所述装置包括:
接收模块,用于接收来自微服务网关的请求;
发送模块,用于响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥;
其中,所述秘钥标识和所述秘钥用于供所述微服务网关根据认证令牌中的所述秘钥标识确定所述秘钥,并基于所述秘钥标识、所述秘钥和所述认证令牌中的时间戳和随机数生成待验证用户签名,所述待验证用户签名用于与所述认证令牌中的用户签名进行比对,以确定对所述第一用户的身份验证是否通过,所述认证令牌携带在所述微服务网关接收自所述第一用户的访问请求中且在预设时间范围内有效,所述微服务网关接收到的来自所述第一用户的多个访问请求分别携带不同的认证令牌;
还包括处理模块,所述处理模块在所述发送模块响应于所述请求,向所述微服务网关发送第一用户对应的秘钥标识和秘钥之前,具体用于:
对秘钥标识种子进行BASE64运算,生成第二字符串,所述秘钥标识种子包括具有第一长度的二进制随机数,所述第二字符串具有第二长度;在所述第二字符串的最后两位为第一字符的情况下,将所述第一字符从所述第二字符串中删除,生成第三字符串,所述第一字符包括“=”;在所述第三字符串中包含第二字符的情况下,将所述第二字符替换为目标对象,得到所述秘钥标识,所述第二字符包括“/”和“+”中的至少一种;在所述第三字符串中未包含所述第二字符的情况下,将所述第三字符串作为所述秘钥标识;
对所述秘钥标识进行安全散列算法SHA256运算,生成中间变量;将所述中间变量划分为多个字节,得到具有第三长度的第一字节数组,所述多个字节中的每个字节包含所述中间变量中的至少一位;从所述第一字节数组中截取第二字节数组,所述第二字节数组具有小于所述第三长度的第四长度;对所述第二字节数组进行BASE64运算,生成第四字符串,并将所述第四字符串作为所述秘钥。
CN202110044970.1A 2021-01-13 2021-01-13 身份验证方法及装置 Active CN112788036B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110044970.1A CN112788036B (zh) 2021-01-13 2021-01-13 身份验证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110044970.1A CN112788036B (zh) 2021-01-13 2021-01-13 身份验证方法及装置

Publications (2)

Publication Number Publication Date
CN112788036A CN112788036A (zh) 2021-05-11
CN112788036B true CN112788036B (zh) 2022-12-27

Family

ID=75755795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110044970.1A Active CN112788036B (zh) 2021-01-13 2021-01-13 身份验证方法及装置

Country Status (1)

Country Link
CN (1) CN112788036B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113572728B (zh) * 2021-06-09 2023-06-02 杭州华橙软件技术有限公司 认证物联网设备的方法、装置、设备及介质
CN113505382A (zh) * 2021-06-18 2021-10-15 杭州华橙软件技术有限公司 微服务鉴权方法、电子装置和存储介质
CN113438242B (zh) * 2021-06-25 2023-08-29 广西三方大供应链技术服务有限公司 服务鉴权方法、装置与存储介质
CN113452531A (zh) * 2021-06-29 2021-09-28 青岛海尔科技有限公司 数据传输方法及装置
CN113810468B (zh) * 2021-08-13 2023-04-18 济南浪潮数据技术有限公司 K8s架构下网关分发请求的方法、系统、设备和存储介质
CN113473468B (zh) * 2021-09-02 2021-11-23 中国电力科学研究院有限公司 一种宽带认知无线通信方法及系统
CN114513349A (zh) * 2022-01-29 2022-05-17 中国人民财产保险股份有限公司 确定微服务请求方来源的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493286A (zh) * 2017-08-23 2017-12-19 杭州安恒信息技术有限公司 一种基于安全鉴权的rpc远程过程调用方法
CN110086822A (zh) * 2019-05-07 2019-08-02 北京智芯微电子科技有限公司 面向微服务架构的统一身份认证策略的实现方法及系统
WO2019166001A1 (zh) * 2018-03-01 2019-09-06 捷开通讯(深圳)有限公司 令牌生成和校验方法及智能终端
CN111030818A (zh) * 2020-01-09 2020-04-17 上海金仕达软件科技有限公司 一种基于微服务网关的统一会话管理方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493286A (zh) * 2017-08-23 2017-12-19 杭州安恒信息技术有限公司 一种基于安全鉴权的rpc远程过程调用方法
WO2019166001A1 (zh) * 2018-03-01 2019-09-06 捷开通讯(深圳)有限公司 令牌生成和校验方法及智能终端
CN110086822A (zh) * 2019-05-07 2019-08-02 北京智芯微电子科技有限公司 面向微服务架构的统一身份认证策略的实现方法及系统
CN111030818A (zh) * 2020-01-09 2020-04-17 上海金仕达软件科技有限公司 一种基于微服务网关的统一会话管理方法及系统

Also Published As

Publication number Publication date
CN112788036A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN112788036B (zh) 身份验证方法及装置
CN111066286B (zh) 使用高可用性的可信执行环境检索区块链网络的公共数据
JP7426475B2 (ja) 分散化されたデータ認証
CN108494775B (zh) 防止利用合法数据或篡改合法数据进行网络攻击的方法
CN110177124B (zh) 基于区块链的身份认证方法及相关设备
CN112671720B (zh) 一种云平台资源访问控制的令牌构造方法、装置及设备
CN106911684B (zh) 一种鉴权方法及系统
CN110781140B (zh) 区块链中数据签名的方法、装置、计算机设备及存储介质
CN111211911B (zh) 一种协同签名方法、装置、设备及系统
CN113872932B (zh) 基于sgx的微服务间接口鉴权方法、系统、终端及存储介质
CN112688773A (zh) 一种令牌的生成和校验方法及装置
CN112948851A (zh) 用户认证方法、装置、服务器及存储介质
CN110855624A (zh) 基于web接口的安全校验方法及相关设备
CN113204772B (zh) 数据处理方法、装置、系统、终端、服务器和存储介质
CN112836202A (zh) 信息处理方法及装置、服务器
WO2019140790A1 (zh) 业务跟踪方法、装置、终端设备及存储介质
CN111404892B (zh) 数据监管方法、装置和服务器
CN112632573A (zh) 智能合约执行方法、装置、系统、存储介质及电子设备
JP2022534677A (ja) ブロックチェーンを使用するオンラインアプリケーションおよびウェブページの保護
CN108418679B (zh) 一种多数据中心下处理密钥的方法、装置及电子设备
CN111241492A (zh) 一种产品多租户安全授信方法、系统及电子设备
CN112787986A (zh) 多路径双向认证方法及装置
CN113901424A (zh) 一种数字身份属性的选择性披露方法和装置
CN113704734A (zh) 基于分布式数字身份实现凭证验证的方法及相关装置
CN115208669B (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