ClawSkills logoClawSkills

Otp Challenger

启用智能体和技能在执行敏感操作前要求用户提供新的双重身份验证证明(TOTP 或 YubiKey)。用于身份验证场景。

介绍

# OTP Identity Challenge Skill

在执行敏感操作前,要求用户进行新的双重身份验证。

## 适用场景

在以下操作前要求进行 OTP 验证: - 部署命令 (`kubectl apply`, `terraform apply`) - 金融操作(转账、支付审批) - 数据访问(PII 导出、客户数据) - 管理操作(用户修改、权限变更)

## 脚本

### verify.sh

验证用户的 OTP 代码并记录验证状态。

```bash ./verify.sh <user_id> <code> ```

**参数:** - `user_id` - 用户标识符(例如:email、用户名) - `code` - 6 位 TOTP 代码或 44 位 YubiKey OTP 代码

**退出码:** - `0` - 验证成功 - `1` - 无效代码或触发速率限制 - `2` - 配置错误(缺少密钥、格式无效)

**成功时的输出:** ``` ✅ OTP verified for <user_id> (valid for 24 hours) ✅ YubiKey verified for <user_id> (valid for 24 hours) ```

**失败时的输出:** ``` ❌ Invalid OTP code ❌ Too many attempts. Try again in X minutes. ❌ Invalid code format. Expected 6-digit TOTP or 44-character YubiKey OTP. ```

### check-status.sh

检查用户的验证是否仍然有效。

```bash ./check-status.sh <user_id> ```

**退出码:** - `0` - 用户拥有有效(未过期)的验证 - `1` - 用户未验证或验证已过期

**输出:** ``` ✅ Valid for 23 more hours ⚠️ Expired 2 hours ago ❌ Never verified ```

### generate-secret.sh

生成新的 TOTP 密钥及二维码(需安装 `qrencode`)。

```bash ./generate-secret.sh <account_name> ```

## 使用模式

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

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

# Proceed with sensitive action ```

## 配置

**TOTP 必需:** - `OTP_SECRET` - Base32 格式的 TOTP 密钥

**YubiKey 必需:** - `YUBIKEY_CLIENT_ID` - Yubico API 客户端 ID - `YUBIKEY_SECRET_KEY` - Yubico API 密钥(base64 格式)

**可选:** - `OTP_INTERVAL_HOURS` - 验证有效期(默认:24) - `OTP_MAX_FAILURES` - 触发速率限制前的最大失败尝试次数(默认:3) - `OTP_STATE_FILE` - 状态文件路径(默认:`memory/otp-state.json`)

可通过环境变量或 `~/.openclaw/config.yaml` 设置配置:

```yaml security: otp: secret: "BASE32_SECRET" yubikey: clientId: "12345" secretKey: "base64secret" ```

## 代码格式检测

脚本会自动检测代码类型: - **6 位数字** (`123456`) → TOTP 验证 - **44 位 ModHex 字符** (`cccccc...`) → YubiKey 验证

ModHex 字符集:`cbdefghijklnrtuv`

## 状态文件

验证状态存储在 `memory/otp-state.json` 中。仅包含时间戳,不包含密钥。

## 说明文档

请参阅 **[README.md](./README.md)** 了解: - 安装说明 - 设置指南(TOTP 和 YubiKey) - 安全注意事项 - 故障排查 - 示例

更多产品