CN112685727A - 一种基于Protobuf的高效身份认证方法 - Google Patents
一种基于Protobuf的高效身份认证方法 Download PDFInfo
- Publication number
- CN112685727A CN112685727A CN202110090990.2A CN202110090990A CN112685727A CN 112685727 A CN112685727 A CN 112685727A CN 202110090990 A CN202110090990 A CN 202110090990A CN 112685727 A CN112685727 A CN 112685727A
- Authority
- CN
- China
- Prior art keywords
- str
- token
- character string
- interface
- payload
- 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
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于Protobuf的高效身份认证方法,第一部分是准备阶段,生成序列化和反序列化接口;第二部分是token生成阶段,用protobuf协议代替json协议,也省去了base64编码,最终得到一个代表用户身份的token字符串,并返回给客户端。第三部分是token解析验证阶段,客户端在请求中携带token来表明其身份,此时将token拆分为3个字符串,并使用对应的反序列化接口,得到字符串原始的数据信息,并验证这些信息是否过期,或者是否被篡改,如果都没有则表明这个身份是合法的,否则就是一个不合法的身份。本发明使用protobuf协议替换json,生成的token的体积更小,因此传输会更快,数据的解析也会更快,从而使得身份认证阶段会更加高效快速,占用整个请求的总时间更少,不会造成用户体验下降。
Description
技术领域
本发明涉及身份认证技术领域,具体涉及一种基于Protobuf的高效身份认证方法。
背景技术
Jwt(JSON Web Token)是目前一种使用非常广泛的身份认证解决方案。对比传统基于session+cookie的身份认证方案,jwt有以下几个优点:
1.无状态:认证所需的所有信息都已经包含在token里面,服务器无需存储记录任何信息,大大减轻了服务器压力,还具有很强的可扩展性。
2.适用移动端app:jwt不依赖于session,token只是普通的json字符串,移动端app很容易处理。
3.有效避免csrf攻击:token往往保存到local_storage中,csrf攻击无法利用认证token。
4.适用于单点登录:包含认证信息的token保存在客户端中,很容易实现单点登录。
5.适用于分布式:认证信息没有保存在服务器中,而是在客户端中,所以jwt也可以在分布式系统中使用。
Protocol buffers通常称为Protobuf,是Google开发的一种协议,允许对结构化数据进行序列化和反序列化。谷歌开发它的目的是提供一种更好的方式来进行系统间通信。因此,它更简单、更小、更快、更易于维护。
身份认证信息作为请求的通行证,所有的请求都会携带,jwt的传输和解析伴随了每一次请求,过大的jwt体积会造成网络传输时间增长,同时解析的时间也会增长,如果jwt的传输和处理时间过长,就会导致请求时间增加,用户体验下降。Jwt(JSON Web Token)数据结构化和数据解析都是基于json的,而json空间利用率和解析速度方面都较差,无法保证用户体验。
发明内容
针对现有技术的不足,本发明旨在提供一种基于Protobuf的高效身份认证方法。
为了实现上述目的,本发明采用如下技术方案:
一种基于Protobuf的高效身份认证方法,包括如下过程:
S1、准备阶段:
S1.1、创建.proto文件;
S1.2、使用protobuf语法,根据实际场景定义header和payload结构;
S1.3、使用protoc编译.proto文件,生成序列化和反序列化接口,其中包含header序列化接口、header反序列化接口、payload序列化接口和payload反序列化接口;
S2、生成token:
S2.1、调用header序列化接口序列化header,得到字符串header_str,以及调用payload序列化接口序列化payload,得到字符串payload_str;
S2.2、用连接符连接字符串header_str和字符串payload_str,得到字符串hp_str;
S2.4、通过header中声明的加密方式进行加盐secret组合加密字符串hp_str,得到字符串crypt_str;
S2.5、用连接符连接字符串hp_str和字符串crypt_str得到最终的token;
S3、token解析验证;
S3.1、输入token;
S3.2、根据token中的连接符,把token切分为三个字符串,分别为str_1、str_2、str_3;
S3.3、调用header反序列化接口反序列化str_1,得到原始的header,以及调用payload反序列化接口反序列化str_2,得到原始的payload;
S3.4、使用token中的连接符连接str_1和str_2得到字符串hp_str,通过原始的header中声明的加密方式,加盐secret组合加密字符串hp_str,得到字符串target_str;
S3.5、判断字符串target_str是否和字符串str_3相等:如果字符串target_str和字符串str_3相等,查看步骤S3.3得到的原始的payload中的有效期字段,判断token是否过期,如果是,则该token为无效token,否则该token为有效token;如果字符串target_str和字符串str_3不相等,则该token为无效token。
进一步地,上述方法中,所述连接符为“.”。
本发明的有益效果在于:本发明使用protobuf协议替换json,省去了base64编码,生成的token的体积更小,因此传输会更快,数据的解析也会更快,从而使得身份认证阶段会更加高效快速,占用整个请求的总时间更少,不会造成用户体验下降。
附图说明
图1为本发明实施例中的方法流程示意图。
具体实施方式
以下将结合附图对本发明作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本发明的保护范围并不限于本实施例。
本实施例提供一种基于Protobuf的高效身份认证方法,如图1所示,包括如下过程:
S1、准备阶段:
S1.1、创建.proto文件;
S1.2、使用protobuf语法,根据实际场景定义header和payload结构;
S1.3、使用protoc编译.proto文件,生成序列化和反序列化接口,其中包含header序列化接口、header反序列化接口、payload序列化接口和payload反序列化接口。
S2、生成token:
S2.1、调用header序列化接口序列化header,得到字符串header_str,以及调用payload序列化接口序列化payload,得到字符串payload_str;
S2.2、用“.”连接字符串header_str和字符串payload_str,得到字符串hp_str;
S2.4、通过header中声明的加密方式进行加盐secret组合加密字符串hp_str,得到字符串crypt_str;
S2.5、用“.”连接字符串hp_str和字符串crypt_str得到最终的token。
生成的token返回至客户端。客户端在请求中携带token来表明其身份,此时需要进行token的解析验证。
S3、token解析验证;
S3.1、输入token;
S3.2、根据token中的“.”,把token切分为三个字符串,分别为str_1、str_2、str_3;
S3.3、调用header反序列化接口反序列化str_1,得到原始的header,以及调用payload反序列化接口反序列化str_2,得到原始的payload;
S3.4、使用“.”连接str_1和str_2得到字符串hp_str,通过原始的header中声明的加密方式,加盐secret组合加密字符串hp_str,得到字符串target_str;
S3.5、判断字符串target_str是否和字符串str_3相等:如果字符串target_str和字符串str_3相等,查看步骤S3.3得到的原始的payload中的有效期字段,判断token是否过期,如果是,则该token为无效token,否则该token为有效token;如果字符串target_str和字符串str_3不相等,则该token为无效token。
对于本领域的技术人员来说,可以根据以上的技术方案和构思,给出各种相应的改变和变形,而所有的这些改变和变形,都应该包括在本发明权利要求的保护范围之内。
Claims (2)
1.一种基于Protobuf的高效身份认证方法,其特征在于,包括如下过程:
S1、准备阶段:
S1.1、创建.proto文件;
S1.2、使用protobuf语法,根据实际场景定义header和payload结构;
S1.3、使用protoc编译.proto文件,生成序列化和反序列化接口,其中包含header序列化接口、header反序列化接口、payload序列化接口和payload反序列化接口;
S2、生成token:
S2.1、调用header序列化接口序列化header,得到字符串header_str,以及调用payload序列化接口序列化payload,得到字符串payload_str;
S2.2、用连接符连接字符串header_str和字符串payload_str,得到字符串hp_str;
S2.4、通过header中声明的加密方式进行加盐secret组合加密字符串hp_str,得到字符串crypt_str;
S2.5、用连接符连接字符串hp_str和字符串crypt_str得到最终的token;
S3、token解析验证;
S3.1、输入token;
S3.2、根据token中的连接符,把token切分为三个字符串,分别为str_1、str_2、str_3;
S3.3、调用header反序列化接口反序列化str_1,得到原始的header,以及调用payload反序列化接口反序列化str_2,得到原始的payload;
S3.4、使用token中的连接符连接str_1和str_2得到字符串hp_str,通过原始的header中声明的加密方式,加盐secret组合加密字符串hp_str,得到字符串target_str;
S3.5、判断字符串target_str是否和字符串str_3相等:如果字符串target_str和字符串str_3相等,查看步骤S3.3得到的原始的payload中的有效期字段,判断token是否过期,如果是,则该token为无效token,否则该token为有效token;如果字符串target_str和字符串str_3不相等,则该token为无效token。
2.根据权利要求1所述的方法,其特征在于,所述连接符为“.”。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110090990.2A CN112685727A (zh) | 2021-01-22 | 2021-01-22 | 一种基于Protobuf的高效身份认证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110090990.2A CN112685727A (zh) | 2021-01-22 | 2021-01-22 | 一种基于Protobuf的高效身份认证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112685727A true CN112685727A (zh) | 2021-04-20 |
Family
ID=75458983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110090990.2A Pending CN112685727A (zh) | 2021-01-22 | 2021-01-22 | 一种基于Protobuf的高效身份认证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685727A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453872A (zh) * | 2017-06-27 | 2017-12-08 | 北京溢思得瑞智能科技研究院有限公司 | 一种基于Mesos容器云平台的统一安全认证方法及系统 |
US20190273746A1 (en) * | 2018-03-02 | 2019-09-05 | Syntegrity Networks Inc. | Microservice architecture for identity and access management |
CN110943911A (zh) * | 2019-12-19 | 2020-03-31 | 北京轻元科技有限公司 | 基于protobuf的物联网高效数据传输方法 |
-
2021
- 2021-01-22 CN CN202110090990.2A patent/CN112685727A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453872A (zh) * | 2017-06-27 | 2017-12-08 | 北京溢思得瑞智能科技研究院有限公司 | 一种基于Mesos容器云平台的统一安全认证方法及系统 |
US20190273746A1 (en) * | 2018-03-02 | 2019-09-05 | Syntegrity Networks Inc. | Microservice architecture for identity and access management |
CN110943911A (zh) * | 2019-12-19 | 2020-03-31 | 北京轻元科技有限公司 | 基于protobuf的物联网高效数据传输方法 |
Non-Patent Citations (1)
Title |
---|
黄伟民等: "基于Token的物联网云平台系统身份认证机制研究", 《智库时代》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10541818B2 (en) | Decentralized biometric signing of digital contracts | |
US10372942B1 (en) | Method and server for providing notary service for file and verifying file recorded by notary service | |
US8527758B2 (en) | Systems and methods for facilitating user identity verification over a network | |
JP5650230B2 (ja) | 低レイテンシーのピア・セッション確立 | |
US8689339B2 (en) | Method, system and apparatus for game data transmission | |
CN108664223A (zh) | 一种分布式存储方法、装置、计算机设备及存储介质 | |
WO2018145127A1 (en) | Electronic identification verification methods and systems with storage of certification records to a side chain | |
CN106470190A (zh) | 一种Web实时通信平台鉴权接入方法及装置 | |
CN101662458A (zh) | 一种认证方法 | |
CN111949958B (zh) | Oauth协议中的授权认证方法及装置 | |
US11777942B2 (en) | Transfer of trust between authentication devices | |
CN109639711A (zh) | 一种基于私有链会话id的分布式cas认证方法 | |
CN107634834A (zh) | 一种基于多终端多场景的可信身份认证方法 | |
CN111949959B (zh) | Oauth协议中的授权认证方法及装置 | |
CN112689014A (zh) | 一种双全工通信方法、装置、计算机设备和存储介质 | |
CN108737328A (zh) | 一种浏览器用户代理识别方法、系统及装置 | |
CN116170144B (zh) | 智能电网匿名认证方法、电子设备及存储介质 | |
CN116647345A (zh) | 权限令牌的生成方法以及装置、存储介质、计算机设备 | |
CN112685727A (zh) | 一种基于Protobuf的高效身份认证方法 | |
CN116527341A (zh) | 一种客户端调用后端接口鉴权授权安全方法 | |
CN114584975A (zh) | 一种基于sdn的抗量子卫星网络接入认证方法 | |
US20130346541A1 (en) | Network Recording Service | |
CN114003884A (zh) | 一种面向安全通信的生物认证密钥协商方法及系统 | |
CN113542235B (zh) | 一种基于令牌互信机制的安全互访方法 | |
CN117579254B (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: 20210420 |