OTP 令牌
TOTP 与 HOTP 令牌的字段、用户自助添加、在用户上启用双因素、密码加 OTP 的输入方式,以及令牌不同步的处理。
本页说明 Authentication 下的 OTP tokens 页面。OTP 令牌是绑定到用户的软件或硬件动态口令。IPA 的 KDC 原生支持:用户认证时把密码和一次性口令拼成一个字符串输入,KDC 校验后签发票据,票据带 otp 认证指示器。不需要 RADIUS,不受许可模块限制。

令牌字段

| 字段 | 含义 |
|---|---|
| Unique ID | 令牌标识。添加时留空则自动生成 UUID |
| Type | TOTP(按时间,默认,30 秒一变)或 HOTP(按计数) |
| Owner | 令牌所属用户。一个用户可以有多个令牌 |
| Validity start、Validity end | 时间窗之外令牌无效,用于临时账号 |
| Vendor、Model、Serial | 硬件令牌的登记信息,仅作记录 |
| Algorithm、Digits、Clock offset、Counter | sha1、6 位、30 秒是 Google Authenticator 一类 App 的默认值;硬件令牌按厂商参数填写 |
添加时页面显示一次二维码,用 FreeOTP、Google Authenticator 等扫码。二维码只显示这一次,关闭后不再出现;需要重新扫码只能删除后重建令牌。
用户自助
用户登录管理台后可以为自己添加、删除令牌(所有者只能是自己),不需要管理员。管理员为用户添加令牌时,密钥由服务端生成,管理员能看到二维码,安全上等于管理员也持有该令牌。正式启用前由用户自行重建一个。
在用户上启用双因素
拥有令牌不等于强制使用。在用户详情页 Account settings 的 User authentication types 勾选 Two factor authentication (password + OTP) 后,该用户只能用密码加 OTP 登录,单纯密码被拒绝。都不勾选时使用 Configuration 页的默认认证类型,出厂值为密码。
同一位置还可以勾选 Password、RADIUS、PKINIT、Hardened password、External Identity Provider。勾选多项表示任一方式都接受。
登录时的输入方式
在密码框输入密码后紧接六位口令,中间不加分隔符。密码 Secret123、口令 482913,输入 Secret123482913。sshd、登录页、kinit 都是这样。sssd 客户端需要 krb5_use_kdcinfo(默认开启)且 IPA 客户端 4.5 及以上才会把两段一起送到 KDC。
令牌不同步
TOTP 手机时间漂移或 HOTP 计数器错位时,使用登录页底部的 Sync OTP token:输入密码和连续两个口令,KDC 算出偏移并写入令牌的 Clock offset 或 Counter 字段。
边界
| 事项 | 说明 |
|---|---|
| 适用对象 | 只对 IPA 用户。AD 用户的 MFA 在 AD 侧 |
admin 用户 | 可以启用双因素,但至少保留一个只用密码的应急管理员,令牌丢失时不至于全部锁死 |
| HOTP 计数器 | 在多台 IPA 服务器间通过复制同步。短时间内在两台上各用一次会出现已使用的拒绝 |