双因素身份验证

6小时前更新 4 00
双因素身份验证双因素身份验证
双因素身份验证

技能简介

otp-challenger 是一个身份验证技能,用于在执行敏感操作前要求用户提供一次性密码(TOTP)或 YubiKey 物理密钥确认,实现操作前的二次身份核验。

业务背景

在财务转账、权限变更等敏感操作前增加安全防线,防止账号被盗导致的资金损失或数据泄露。通过动态验证码或物理密钥进行二次确认,即使密码泄露也能阻断未授权操作,满足合规审计对关键操作的强认证要求。

落地案例:财务人员执行大额付款指令时,系统弹出二次验证窗口,要求其输入手机Authenticator生成的6位动态码或插入YubiKey硬件密钥确认。验证通过后24小时内同类型操作无需重复验证,既保障单笔高风险交易的安全,又兼顾日常操作效率,避免频繁打扰业务节奏。

能做什么

  • 验证用户输入的6位TOTP动态码
  • 验证44位YubiKey OTP硬件令牌
  • 自动识别验证码类型(数字/TOTP或ModHex/YubiKey)
  • 记录验证状态并设置有效期(默认24小时)
  • 查询用户当前验证状态是否过期
  • 生成新的TOTP密钥及二维码
  • 失败次数限制与速率控制

使用说明

安装依赖

# macOS/Linux 通过 Homebrew 安装
brew install jq python3 oath-toolkit

环境配置

TOTP模式需设置:OTP_SECRET(Base32格式密钥)

YubiKey模式需设置:YUBIKEY_CLIENT_IDYUBIKEY_SECRET_KEY

可选配置:OTP_INTERVAL_HOURS(有效期,默认24)、OTP_MAX_FAILURES(最大失败次数,默认3)

基础用法

#!/bin/bash
source ../otp/verify.sh

if ! verify_otp "$USER_ID" "$OTP_CODE"; then
  echo "🔒 This action requires OTP verification"
  exit 1
fi

# 执行敏感操作

检查验证状态

./check-status.sh <user_id>

生成新密钥

./generate-secret.sh <account_name>

输入与输出

见下方输入与输出表格。

项目内容
输入user_id(用户标识)、6位TOTP码或44位YubiKey OTP、环境变量配置(OTP_SECRET或YUBIKEY_CLIENT_ID/SECRET_KEY)
输出退出码(0成功/1失败/2配置错误)、验证状态文本、有效期倒计时
适用人群DevOps工程师、系统管理员、金融操作人员、需要敏感操作审批的团队
不包含TOTP/YubiKey硬件设备、用户账户系统、完整审计日志、实时通知服务

 

风险提示

  • OTP_FAILURE_HOOK 可执行任意shell命令,需谨慎配置
  • 验证状态文件仅存储时间戳,密钥不落地
  • 建议配合HTTPS传输防止中间人截获验证码
  • 多次失败将触发速率限制,需等待后重试

来源信息

原始链接:https://github.com/openclaw/skills/tree/main/skills/ryancnelson/otp-challenger/SKILL.md
来源类型:GitHub仓库

数据统计

相关导航

暂无评论

none
暂无评论...