usb key登录相关知识整理

     项目里面要集成usb key登录,但是相关的知识从公开渠道还不是很容易找到,对于不了解如何集成的人来讲容易让人一头雾水摸不着头脑。

     大体流程应该是:

1.客户端电脑先安装驱动程序,如果项目支持的浏览器是IE,一般这个驱动里面会带有基于activex技术的com组件供你在html页面里面去操作usb key,如果是新的现代浏览器,如chrome,edge等,一般都会有个在客户端电脑本机监听的websocket server,供浏览器通过websocket与监听程序通讯,然后由这个监听程序去访问usb key硬件。

2.使用厂商提供的sdk读取证书列表,毕竟一台计算机上面是有多个usb 端口的,有可能会插入多个硬件,读取到usb key证书列表以后显示出来供用户选择要使用哪一个,这一步都是在前端完成的,和后台没有关系。

3.让用户输入证书对应的密码,还是在前端js里面用密码和选中的证书调用sdk验证证书密码是否正确,这个也和后台没有关系,都是厂商sdk会支持的动作,密码对或不对厂商的sdk会给出返回值,如果不对的话还有几次尝试机会也要显示给用户防止usb key彻底锁死。

4.密码验证对了以后随便找个随机数据进行签名,如通过随机数算法生成一段字符串等,可以调用厂商的sdk获取这个随机数也可以自己计算生成这个随机数,然后调用sdk读取usb key里面嵌入存储的用户私钥证书对这个随机数进行签名,签名肯定要用私钥,这个时候usb key需要保持和电脑的连接状态,因为证书你弄不出来,是存储在usb key里面的(还有另外一种事件型证书是一次性的,那个不是嵌入硬件的,如ToC业务系统里面的消费者签名,C端用户不可能人手一个usb key吧)。这个过程取随机数最好是后台生成或者调用厂商接口获取的,对随机数据进行签名可以在前端js里面去签,也可以在服务器端去签署。

5.前端将证书信息、对随机数的签名结果信息发给服务器端后台程序,后台程序调用厂商接口进行验签,如果是合法证书的话服务器端的公钥应该是可以正常对数据进行验签的,注意这一步应该在session或者类似的地方记录一下前端发过来的数据,将来要做比对用。如果签名数据被CA厂商验证没有问题,包括证书没有过期、证书没有作废之类的验证都没有问题的话获取usb key里面的唯一标识性信息,一般可能都是有个身份证号码存储在usb key里面了,把这个可以唯一标识用户身份的信息通过sdk读取到并从数据库里面查找对应的用户信息,将用户信息存入session设置登录状态为登录成功。

以上是大致的usb key登录流程,需要对业务系统的员工信息管理功能之类的做改造,支持绑定usb key数字证书,支持设置修改usb key密码,支持usb key更换等操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值