业界动态
谷歌authenticator接入与使用
2024-12-29 21:09

内容目录

一、authenticator解决了什么问题二、authenticator的原理三、springboot集成authenticator四、做成可复用starter五、参考

一、authenticator解决了什么问题

1.authenticator是什么?

谷歌Authenticator是谷歌推出的一种双因素身份验证应用程序。它是一种为用户提供额外层次的账户保护的安全工具。传统的认证方式通常只依赖于用户名和密码,而双因素身份验证则需要用户提供两个不同类型的验证信息,以增加账户的安全性。

谷歌Authenticator通过生成动态的一次性密码来实现双因素身份验证。当你登录一个已启用谷歌Authenticator的系统或服务时时,需要输入用户名和密码,然后打开 Authenticator 应用来获取当前的一次性密码。这个密码每30秒钟更新一次,只在短暂的时间段内有效。

这种一次性密码是通过基于时间戳的算法计算得出的,同时还需要通过与账户绑定的密钥进行验证。由于每个密码只在极短的时间内有效,并且密码是动态变化的,即使有人获得了您的用户名和密码,他们也无法成功登录您的账户,因为他们没有有效的一次性密码。

谷歌Authenticator还可以与多个账户关联,这意味着您可以在一个应用中管理多个账户的一次性密码。它对于保护您的各种在线账户(如电子邮件、社交媒体、金融服务)非常有用。

简而言之,谷歌Authenticator是一种提供额外层次安全保护的双因素身份验证应用程序。它通过生成动态的一次性密码来增加账户的安全性,并在登录过程中要求用户提供额外的验证信息。

2.它本质上解决了什么问题?

谷歌Authenticator本质上解决了以下问题:

总之,谷歌Authenticator增加了双因素身份验证的安全性,提供了一种简便而有效的方式来保护您的帐户免受未经授权访问和针对性攻击的威胁。

二、authenticator的原理

1.基于时间的TOTP

谷歌Authenticator是基于TOTP算法实现的验证方式,TOTP(Time-based One-Time Password是谷歌Authenticator中使用的一种身份验证方法。它基于时间的动态密码算法,用于生成一次性密码(One-Time Passwords)。

当启用谷歌Authenticator并为特定帐户配置时,它会与该帐户关联一个密钥。该密钥私密地存储在您的设备上。每30秒钟,该密钥都会与当前时间戳进行计算,并生成一个新的一次性密码。

当您需要进行身份验证时,您可以打开谷歌Authenticator应用程序,输入相关帐户的用户名,然后应用程序会基于与服务器同步的时间戳生成相应的一次性密码。您将此密码输入到身份验证页面或应用程序中,以确认您是合法用户。

TOTP 提供了一种额外的安全层次,因为即使有人获得了您的用户名和密码,仍然需要一个有效的一次性密码才能访问您的帐户。这增加了保护您的帐户免受未经授权访问的可能性。

TOTP是HOTP的一个变种,将HOTP中的计数器C替换为依托时间的参数T,T是由当前时间(CurrentUnixTime、初始时间(T0)、步长(X)决定的。即:

TOTP 是谷歌 Authenticator 中使用的基于时间的动态密码算法,提供了一种增强的身份验证机制,以确保只有授权用户能够访问其帐户。

2.认证流程与原理

三、springboot集成authenticator

1.引入依赖

googleauth 是一个开源的 Java 库,用于在 Java 应用程序中实现谷歌 Authenticator 功能。它提供了一组类和方法,让开发人员能够轻松地集成谷歌 Authenticator 的功能到他们的 Java 应用程序中。googleauth 库使用谷歌 Authenticator 的算法来生成一次性密码,并提供了验证这些密码的功能。

2.编写实现

编写生成秘钥、二维码以及code验证工具类:

编写逻辑入口:

3.使用方式

四、做成可复用starter

1.与会话同生命周期

用户登录成功后,需要验证authenticator验证码才能跳转到引导页,也就说明一次性验证码验证态与登录态是强绑定的。

2.做成拦截器

拦截登录接口,把登录路径做成配置化,由starter读取,登录完成后跳转到绑定authenticator或者输入验证码。并且对于其他路径也要同时校验登录态和TOTP验证态。

3.自主控制开启

通过配置控制开启全局authenticator验证能力,包含绑定和code验证。

在用户管理维度,做成可视化能力,可在用户粒度控制是否启用authenticator二次认证

4.可复用

前边我们把接入authenticator二次验证直接写入到了springboot项目中,那么如果有其他项目要接入,还是要从头到尾写一遍,所以我们可以写成springboot-starter的方式,做成可复用的能力。

属性配置:

设置是否启用Authenticator以及登录注册路径。

拦截器:

如果是登录、注册或者验证code路径,preHandle跳过校验,否则检查用户登录态和code验证态。对于postHandle处理完请求返回数据视图之前,如果检查是登录请求,那么返回绑定TOTP验证二维码或者输入code表单。

自动注入配置类:

主要生命相关依赖的bean以及拦截器,拦截器优先级会放到比较低的位置,从而不影响springboot项目本身的拦截器执行顺序。

入口配置:

在starter模块创建meta-INF/spring.factories配置

在依赖该starter的springboot项目启动时会自动加载并解析实例化配置类。

上述步骤是主要的步骤和实现,在具体编码实现时还需要调整和打磨细节问题,完成上述步骤后把starter打成jar,在springboot应用引入并做好相关配置就能使用authenticator能力了。

五、参考

https://github.com/wstrange/GoogleAuth

https://rstyro.github.io/blog/2019/04/29/SpringBoot-Google%E4%BA%8C%E6%AD%A5%E9%AA%8C%E8%AF%81/

https://www.cnblogs.com/50614090/p/5848409.html

    以上就是本篇文章【谷歌authenticator接入与使用】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/12370.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
为什么现在人们都在做自媒体,真的能挣到钱吗?还是别的原因呢?
只有极少一部分人能挣到钱,连百分之一也不到。一个月你能挣到100块钱,你已经算是出类拔翠的了。许多人忙了整整一年,也很有可
TikTok闯关,小红书躺赢?
这年头,谁人不为流量发愁。两家不同风格的社交平台,正因此陷入各自的应战状态。1月14日,来自TikTok难民的泼天的流量,正在疯
盐城城南新区热搜小区榜:万科悦达·翡翠云台为何成用户心头好?
在当前房地产市场风起云涌的背景下,每一个小区的热搜情况都将映射出购房者的心理和市场趋势。上周(1月13日-1月19日),盐城城
AI智能体:天工AI,解放双手,高效写作
#### 二、解放双手,高效创作的秘密武器在快节奏的工作和生活中,时间是最宝贵的资源。天工AI通过自动化处理大量重复性劳动,如
2024年度榜单TOP20|聚焦三大领域两大人群
2024年,发现报告平台累计更新了817,467篇报告,3,934,125条数据,156个报告专题;大家在发现报告共搜索了17,764,708次,其中AIG
致欧科技进驻小红书:如何借助年轻消费趋势重塑品牌形象
在当今消费市场,年轻人正在引领潮流,尤其是在社交媒体平台如小红书上,他们的影响力不容小觑。金融界在1月20日的报道中提到,
抖音移动营销推广-抖音推广营销广告
在当今数字化时代,移动营销推广已成为企业拓展市场、提升品牌知名度和增加销售额的重要手段,而抖音,作为全球(黑帽seo)的短视
经验总结“微信链接拼三张开挂技巧辅助器工具”分享装挂详细步骤
尊敬的微信链接拼三张游戏爱好者们,你是否曾经在游戏中遇到过难以逾越的关卡、强大的对手,或是一直无法获得胜利而感到沮丧?现
小红书用户画像深度解析:90后女性主导,Z世代与都市潮人引领潮流
小红书增长迅速,月活跃用户数高达2亿,创作者数量超过4300万。用户群体画像鲜明,对于想要在小红书上开展运营的新手来说,这具
2025年第3周:食品饮料行业周度市场观察
食品丨市场观察 本周看点: -食品饮料2024 “健康”成为胜负手; -六大类目,谁是2024市场份额增长TOP5? -2025年食饮营销有哪些