本发明涉及jwt令牌认证技术,尤其涉及一种基于区块链的jwt令牌认证方法。
背景技术:
在一个互联的移动世界中,对用户身份进行保护以免受身份盗窃和欺诈的需求非常强烈。
如今,从可穿戴设备、相机、家用电子产品以及户门,再到汽车和医疗设备等,一切都已互联起来,并且这种互联将会更深入地加速,尤其是随着5g进入市场,我们将看到更多智能的互联设备——所有这些设备都具有相互通信和交换数据的功能。
由此,我们的身边围绕各种互联设备服务于我们的日常生活,这些技术给我们带来了成倍成倍的便利。
但是,往往当新技术得到广泛应用时,恶意攻击的机会也不可避免地会增加,因此我们也需要不断改进网络安全。
在一个迅速变化的数字世界中,方便,往往是用户的最大期待,而不是被视为“锦上添花”。
这意味着用户身份的安全管理,不仅是我们一大担忧,更是一项重大挑战。
jwt(jsonwebtoken)是一个基于json的开放标准(rfc7519),定义了一种紧凑的、自包含的方式,又因为它是经过数字签名的,所以常作为网络应用中身份提供者和服务提供者之间的用户身份凭据。区块链技术具有不可篡改、可追溯的特性,结合jwt标准协议,搭建一套可信任的令牌认证体系。
技术实现要素:
根据以上的内容,本发明提出了一种基于区块链的jwt令牌认证方法,旨在提高令牌认证系统的安全性、可信任性和可追溯性。
本发明的技术方案是:
一种基于区块链的jwt令牌认证方法,
实现过程分为三步:
1)验证码获取:jwt令牌服务接收验证码获取请求后,查询区块链的当前区块高度,将当前区块高度和当前时间戳作为随机种子,生成不可预测的随机码;
2)验证码写链:用户在区块链客户端签署验证码写链交易,然后提交写链交易到区块链,用于令牌发放时的验证;
3)jwt令牌发放:由jwt令牌服务生成jwt令牌时,将验证码也写入到令牌,由令牌服务发起验证码校验区块链交易,由令牌认证智能合约进行验证码与用户的验证,验证通过,则将验证码与jwt令牌的关系写入区块链,然后由令牌服务将jwt令牌发放给用户,若验证失败,则不写链。
总体分为五个部分,1)搭建区块链网络,2)部署jwt令牌服务,3)jwt令牌申请,4)jwt令牌验证。
进一步的,
1)搭建区块链网络
使用hyperledgerfabric框架搭建区块链网络,为智能合约提供运行时环境;然后部署令牌认证智能合约,实现验证码校验和写链功能。
进一步的,
2)部署jwt令牌服务
部署jwt令牌服务,实现jwt令牌的发放、以及验证码请求的接收和检查业务。
进一步的,
3)jwt令牌申请
首先,用户向jwt令牌服务发送获取验证码的请求,jwt令牌服务生成随机验证码并返回给用户;
接下来,用户使用区块链客户端签署验证码上链交易,并发送到区块链网络,区块链网络接收到交易请求后,将验证码写入区块链;
验证码写链成功后,用户使用验证码向jwt令牌服务发送令牌获取请求,jwt令牌服务接收到请求后,首先利用jwt的hs256加密类型生成jwt令牌,令牌签名使用统一秘钥,然后将令牌和验证码作为参数调用区块链的令牌认证智能合约发起验证码校验请求;
最后,jwt令牌服务根据验证码校验结果,判断是否将jwt令牌返回给用户。
再进一步的,
所述验证码校验,即智能合约将查询该验证码的写链交易,比较验证码写链交易的签名公钥与验证码校验交易的签名公钥是否一致:若不一致,则验证失败;若一致,则验证通过,并将该jwt令牌和验证码的关联关系进行写链操作。
进一步的,
4)jwt令牌验证
用户发送令牌验证请求到jwt令牌服务,jwt令牌服务使用签名令牌的统一秘钥进行验签操作,并返回验签结果。
本发明的有益效果是
1)可信任
基于区块链技术,每次令牌发放交易均由用户私钥签署上链交易,具有不可否认行。
2)可追溯
基于区块链技术,具有不可篡改特性,令牌发放交易历史不可删除和更改。
附图说明
图1是本发明的jwt令牌发放示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种基于区块链的jwt令牌认证方,其技术实现方案如下:
1)搭建区块链网络
使用hyperledgerfabric框架搭建区块链网络,为智能合约提供运行时环境;然后部署令牌认证智能合约,实现验证码校验和写链功能。
2)部署jwt令牌服务
部署jwt令牌服务,实现jwt令牌的发放、以及验证码请求的接收和检查业务。
3)jwt令牌申请
首先,用户向jwt令牌服务发送获取验证码的请求,jwt令牌服务生成随机验证码并返回给用户;
接下来,用户使用区块链客户端签署验证码上链交易,并发送到区块链网络,区块链网络接收到交易请求后,将验证码写入区块链;
验证码写链成功后,用户使用验证码向jwt令牌服务发送令牌获取请求。
jwt令牌服务接收到请求后,首先利用jwt的hs256加密类型生成jwt令牌,令牌签名使用统一秘钥,然后将令牌和验证码作为参数调用区块链的令牌认证智能合约发起验证码校验请求;
智能合约将查询该验证码的写链交易,比较验证码写链交易的签名公钥与验证码校验交易的签名公钥是否一致:
若不一致,则验证失败;若一致,则验证通过,并将该jwt令牌和验证码的关联关系进行写链操作;
最后,jwt令牌服务根据验证码校验结果,判断是否将jwt令牌返回给用户。
4)jwt令牌验证
用户发送令牌验证请求到jwt令牌服务,jwt令牌服务使用签名令牌的统一秘钥进行验签操作,并返回验签结果。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。