MENU

文章目录

  • 前言
  • 更新记录
  • 使用说明
    • 绑定 OTP 密钥
    • 解绑 OTP 认证
    • 登录认证
  • 插件安装
  • 插件配置

Typecho 多用户二次认证插件

2023 年 11 月 29 日 • 阅读: 3058 • PHP

前言

出于网站安全性的考虑,想在 Typecho 管理后台登录时加一个基于 OTP 的多因素认证功能,网上找了半天没有合适的扩展,唯一找到的一个扩展还不支持多用户,于是就自己写了一个。

  • 依赖要求:Typecho 1.2.0+
  • 特点:界面简洁、支持多用户

更新记录

2024-02-01

  • 解决所有表单都添加 otp 输入框的bug

2024-01-24

  • 修复 PHP 8.2 + 语法不兼容的错误提示 Deprecated: Using ${var} in strings is deprecated, use {$var}
  • 调整 OTP 动态码 input 框的挂载方式,尽量兼容更多后台模板

使用说明

插件开启后,在登录页面会多一个动态码输入框,需要输入账户密码时同时输入OTP 动态码(令牌)进行校验,校验失败时会提示相应错误信息。

2023-11-29T13:16:28.webp

绑定 OTP 密钥

在个人设置页面,使用身份验证器扫码或手动绑定,扫描后输入六位动态码进行验证。
绑定成功后密钥固定不再变化,未绑定时每次加载个人页面随机生成密钥(若怀疑密钥已泄露不安全,则解绑后重新绑定即可)。

2023-11-29T13:20:57.webp

otpauth 信息中包含站点名称、当前用户名称,扫码添加后效果如下:

2023-11-29T13:55:12.webp

解绑 OTP 认证

绑定成功后再进入个人设置页面,可以校验六位验证码,可以进行解绑操作。
2023-11-29T13:26:13.webp

登录认证

插件开启后,后台登陆页面会增加一个动态码输入框,已绑定的后台用户在登陆时需要校验 OTP 动态码,未绑定的用户则不会校验,为空正常登录即可。

2023-11-29T13:28:09.webp

插件安装

去码云下载插件

插件配置

第一个是 OTP 认证码的时间窗口期,主要用于解决客户端和服务器时间戳不一致的问题。
第二个为一个防呆设计,因为 Typecho 插件卸载后插件的所有数据都将删除,这就会导致所有人的 OTP 密钥全部丢失,即使重新开启插件也无法恢复,为了防止不小心点到禁用按钮,需要在设置页面改为确认卸载后才允许卸载插件。

2023-11-29T13:41:24.webp

Typecho
最后编辑于: 2024 年 02 月 01 日
取消回复
添加新评论

已有 10 条评论
  1. 泽泽 泽泽
    回复

    优秀,typecho各种插件越来越丰富了

  2. 电脑星人 电脑星人
    回复

    截图里面的二步验证器好像是 Authenticator Pro,这个我也在用,挺好用的;

    学到了,插件可以这样实现拒绝卸载,可以避免一些误操作 @(真棒)

    1. 两双筷子 两双筷子
      回复

      @电脑星人截图里是 Authenticator Pro ,不过不只是用作演示, Authenticator Pro 没有云同步,我用官方版的 Bitwarden 一步到位@(笑眼)

  3. 龙虾 龙虾
    回复

    大佬您好我发现了个问题,我用了Typecho后台美化模板JKAdmin,开启二步验证后,登录页面不显示OTP输入框,但是登录时有显示未输入OTP验证码,截图:https://pic.imgdb.cn/item/65a536fe871b83018aa7c695.jpg

    1. 两双筷子 两双筷子
      回复

      @龙虾看了一下这个模板,修改了 login 页面的 dom 结构,插件是以官方模板为标准做的,简单修改了一下挂载 input 框的方式,邮箱发你了,能显示出来,但体验不太好,只能你自己进一步调整了,因为后端模板太多了 适配不过来,优先以官方模板为准。

  4. 看透一切的打工人 看透一切的打工人
    回复

    在个人页面报错了,但不影响使用
    Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /typecho/usr/plugins/Login2FA/GoogleAuthenticator.php on line 112

    1. 两双筷子 两双筷子
      回复

      @看透一切的打工人这个警告是 PHP 8.2 的一个特性变更导致的语法弃用,8.2 版本中不会影响正常使用,只是会提示。这周有空我修复一下。

  5. 闻者通达 闻者通达
    回复

    请问作者是否有可能支持 PassKey 通行密钥呢?

    1. 两双筷子 两双筷子
      回复

      @闻者通达PassKey 插件,论坛已经有了 https://forum.typecho.org/viewtopic.php?t=24984

  6. 糯木头 糯木头
    回复

    太棒了!

PHP网站源码平湖网站优化软件东莞SEO按效果付费吉祥百度seo罗湖高端网站设计龙华网站建设广州百度标王沙井网站优化推广南山关键词按天计费南澳外贸网站制作南澳如何制作网站龙岗网络推广民治建站石岩seo优化荷坳推广网站南联百度竞价包年推广宝安关键词排名包年推广大浪网站开发福永外贸网站制作广州网站建设设计观澜推广网站平湖外贸网站制作西乡百姓网标王推广深圳网站开发南联网站设计大芬推广网站南澳网站定制塘坑网站改版观澜关键词排名包年推广大芬百搜标王南澳模板网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化