PostgreSQL学习之双因素认证设想及验证

        postgresql数据库实现了password、md5、scram-sha-256等等认证方式,考虑增加USBKEY等方式的进一步认证识别,设想在函数ClientAuthentication中常规认证函数之后增加一步USBKEY或其他方式的认证。

        设想认证流程如下:

        第一步常规认证结束(如md5)之后,增加一步公钥认证请求,其流程与MD5认证一致,首先服务端发送认证请求和随机数,客户端对随机数使用私钥签名后发送给服务端,服务端收到签名后使用预存的该用户的公钥对签名值进行验证,验证成功则认证通过。

        验证:

                增加宏AUTH_REQ_PUBLEIKEY用于在认证过程中进行处理公钥认证。

                仿函数CheckMD5Auth,增加函数CheckPublicAuth,用于发送认证请求AUTH_REQ_PUBLEIKEY:

                sendAuthRequest(port, AUTH_REQ_MD5, md5Salt, 4);//随机数长度可任意指定

                在函数ClientAuthentication最后的钩子ClientAuthentication_hook位置部分调用上述函数CheckPublicAuth

                至此,后端部分已处理完毕,下面是前端对认证CheckPublicAuth的处理:

                在函数pg_fe_sendauth中增加对宏AUTH_REQ_PUBLEIKEY的处理,可以仿照对MD5的处理,首先接收随机数,然后对随机数进行处理(签名),然后发送签名值。

        按照上述想法修改代码验证认证流程可行。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值