使用google authenticator打造运维平台的动态口令

本文介绍了基于时间的一次一密算法(TOTP)及其实现工具Google Authenticator的工作原理和应用过程。用户通过安装Google Authenticator并在手机上生成与服务器同步的一次性密码来增强账户安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址http://rfyiamcool.blog.51cto.com/1030776/1416189

otp是什么知道么?是一次性密码,简单的说,totp是基于时间的,htop是基于次数的。

 

GoogleAuthenticator这个开源的项目实现了基于时间的一次一密算法,也就是Time-basedOne-timePassword(TOTP),这个是客户端的实现。同时在GitHub上有服务器端的实现。大家在github厘搜搜,不管是几乎任何语言的totphotp的实现方式都有的,拿来就能用。

下面是使用一次一密基本的步骤:

1.在服务器端对每个用户生成一个密钥SecretKey,这个密钥对于每个用户是不同的。

2.用户在自己的手机上安装GoogleAuthenticator。第一次使用这个系统的时候,将密钥输入到GoogleAuthenticator。这里有两种输入方式,可以手动的输入,也可以由系统生成二维码,GoogleAuthenticator可以直接扫描二维码来读取密钥信息和帐号信息。同时可以设置一些参数,比如一次一密的长度(默认为6),时间步长(默认为30s)等。

3.GoogleAuthenticator每隔一段时间为系统自动生成一个新的密码。系统验证的时候,用户输入GoogleAuthenticator中的数字密码来验证。

这里的一次一密的原理是这样的。首先是对于同一个用户,服务器和GoogleAuthenticator这个客户端共享了一个密钥SecretKey,二是服务器和GoogleAuthenticator有相同的时间。

在我们的平台中怎么用到,比如单点登录的时候,除了帐号密码,还需要一个口令卡,这看起来是不是很酷。当时如果你的口令牌没有拿,放到家里了,除了呵呵,也可以走自动申请流程的方式让管理员暂时去除对你的口令认证。

个人觉得在权限管理接口上,如果集成口令,是一件很爽的事情,比如你申请改密码,我不需要重新给你发短信,你只要有口令就好了。不多说了,他的好处还是不少。

他的缺点也显而易见,麻烦。。。。。是推动这件事,麻烦。在技术上其实没啥难度,毕竟大点的互联网都集成了单点登录,我只需要在单点登录加个对比就行了。

 

GoogleAuthenticator会基于密钥和时间计算一个HMAC-SHA1的hash值,这个hash是160bit的,然后将这个hash值随机取连续的4个字节生成32位整数,最后将整数取31位,再取模得到一个的整数。这个就是GoogleAuthenticator显示的数字。在服务器端验证的时候,同样的方法来计算出数字,然后比较计算出来的结果和用户输入的是否一致。

使用这两个来完成一次一密确实很方便的,大家可以尝试用googeAuthenticator代替手机短信来实现一次一密的方法。一个能让运维平台更安全,更时髦的方法,就这么出来了。文章有些原理没有描述清晰,请见谅。

这篇主要是介绍篇,如果大家有兴趣,我再写写服务器端的一些操作。

 


1.能够熟练使用Java进行企业级项目的开发,熟悉企业开发的流程,对面向对象编程(OOP)思想一定的理解。 2.熟练使用SpringMVC、Spring Boot、Spring、Mybatis等多种框架,了解一定的IOC和AOP的原理,利用AOP实现过权限控制,如:超级管理员身份和普通员工,部门负责人的数据权限进行控制。 3.熟悉使用MySQL等关系型数据库,能进行数据库的查询进行一定程度的优化。 5.熟悉使用Redis,作为缓存数据库,加快数据的缓存与处理。 6.熟悉前后端分离服务器的部署,进行服务器上项目利用Nginx进行代理和HTTPS证书密钥的配置。 7.熟悉LInux系统,能够编写Shell脚本和进行简单的数据优化和服务器性能的简单调优。 8.熟悉掌握HTML,CSS,JavaScript,Vue,Node.js等前端技术栈,擅长使用Element-plus进行界面的编写。 9.熟练掌握Gitee、Maven、Postman、IDEA、VScode等常用开发工具 10.了解Spring Cloud微服务,了解Kafka,Docker等技术栈,能使用消息队列进行高并发的处理。 11.能完成大多数接口文档的编写和特定数据的编写。 12.了解NIO和BIO的网络编程,熟悉Netty框架,参与过物联网数据平台的开发,并进行过软件与硬件的对接和数据处理。 13.熟悉若依框架,擅长处理若依本身的开发逻辑,如:生成文件名转规定的格式,导出Excel自增编号,权限控制等问题。 帮我优化一下这份简历的内容,最好是结合项目的实际应用做出举例,不要太过千篇一律,同时可以给我补齐Spring Security的技术并举例
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值