为 Koishi 提供了一次性密码服务。
OTP 服务支持以下算法:
更多算法欢迎提交 PR。
使用
安装
插件市场搜索 otp
并安装。
命令
-
otp [name]
: 列出用户保存的某个或所有密码。 -
otp.add <name> <token>
: 添加或覆盖认证账号。 -
otp.rm <name>
: 移除令牌。
配置项
最大步长在 TOTP 算法中表示每隔多少秒更新一次密码,HOTP 算法中表示每隔多少次更新一次密码。
-
qrcode (
boolean
): 是否在添加令牌时显示二维码,默认值:true
。 -
tokenizer (
random
、uuid
、timestamp
): 公共令牌生成方式,默认值:uuid
。 -
maxStep (
number
): 最大步长,默认值:30
。 -
maxThreshold (
number
): 最大重试阈值,默认值:5
。
开发
安装开发依赖
npm i koishi-plugin-otp -D
# or yarn
yarn add koishi-plugin-otp -D
API
类: OTPService
可通过 ctx.otp
访问。
otp.generate(method: OTPMethod, options: OTPOptions)
-
method
: 认证算法,支持totp
和hotp
。 -
options
: 认证配置项,支持以下属性: -
secret
: 共享密钥。 -
algorithm
: 哈希算法,支持sha1
、sha256
和sha512
。 -
digits
: 密码长度。 -
period
: 密码更新周期。 -
step
: 最大步长。
生成密码。
otp.createToken(tokenizer?: Tokenizer, salt?: string)
-
tokenizer
: 密钥生成器,支持random
、uuid
和timestamp
。 -
salt
: 密钥生成器的盐。
创建共享密钥。
在 WebUI 中使用(New!)
插件目前可以在 WebUI 中使用了:
import { useOTP } from 'koishi-plugin-otp/dist'
const otp = useOTP('totp', {
secret: 'your secret',
algorithm: 'sha1',
digits: 6,
period: 30,
step: 1
});
鸣谢
- Arily: 提供了 commands 实现与修复了一些 bug。
License
This project is licensed under the MIT license.