7.2. 身份管理中的一次性密码(OTP)身份验证
一次性密码可为您的身份验证安全性增加一步。身份验证使用您的密码,并自动生成一次性密码。
要生成一次性密码,您可以使用硬件或软件令牌。IdM 同时支持软件和硬件令牌。
身份管理支持以下标准的 OTP 机制:
- 基于 HMAC 的一次性密码(HOTP)算法是基于计数器的。HMAC 代表哈希消息身份验证代码。
- 基于时间的一次性密码(TOTP)算法是 HOTP 的扩展,来支持基于时间的移动因子。
IdM 不支持活动目录信任用户的 OTP 登录。
以下安全性和其它限制目前与 IdM 中的 OTP 支持相关:
- 最重要的安全限制是潜在的漏洞,可以在系统中重播攻击。复制是异步的,因此可在复制期间重复使用 OTP 代码。用户可以同时登录两台服务器。但是,由于全面的加密,此漏洞通常很难利用。
-
无法使用不支持 OTP 身份验证的客户端获取票据授予票(TGT)。这可能会影响某些用例,如使用
mod_auth_kerb
模块或通用安全服务 API (GSSAPI)的身份验证。
7.2.1. 可用的 OTP 身份验证方法 复制链接链接已复制到粘贴板!
在启用 OTP 身份验证时,您可以从以下验证方法中选择:
- 双因素身份验证(密码 + OTP)
- 使用此方法时,始终用户需要输入标准密码和 OTP 代码。
- 密码
- 使用此方法时,用户仍可以选择使用标准密码进行身份验证。
- RADIUS 代理服务器身份验证
- 有关在 IdM 中为 OTP 验证配置 RADIUS 服务器的详情,请参考 在 IdM 中为 OTP 验证配置 RADIUS 服务器
- 全局和特定于用户的身份验证方法
您可以在全局范围内或个人用户配置这些身份验证方法:
- 默认情况下,特定于用户的身份验证方法设置优先于全局设置。如果没有为用户设置验证方法,则应用全局定义的方法。
- 您可以为任何用户禁用按用户的身份验证方法设置。这样可确保 IdM 忽略了每个用户的设置,并始终为用户应用全局设置。
- 合并多个验证方法
如果您配置了多种身份验证方法,则其中任何一种都足以成功验证用户。例如:
如果您同时配置双因素和密码身份验证,用户必须提供密码(第一个因素),但在使用命令行时提供 OTP (秒因数)是可选的:
First Factor: Second Factor (optional):
First Factor: Second Factor (optional):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 Web UI 中,用户必须仍然提供这两个因素。
但是,当配置了 RADIUS 和另一个验证方法时,会存在小的异常:
- Kerberos 始终使用 RADIUS,但不使用 LDAP。LDAP 只能识别密码和双因素身份验证方法。
- 如果您使用外部双因素身份验证供应商,请从应用程序中使用 Kerberos。如果您只想让用户使用密码进行身份验证,请使用 LDAP。建议应用程序使用 Apache 模块和 SSSD,这允许配置 Kerberos 或 LDAP。
7.2.2. GNOME Keyring 服务支持 复制链接链接已复制到粘贴板!
IdM 将 OTP 身份验证与 GNOME Keyring 服务集成。请注意,GNOME Keyring 集成要求用户分别输入第一个和第二个因素:
First factor: static_password Second factor: one-time_password
First factor: static_password
Second factor: one-time_password
7.2.3. 使用 OTP 进行离线身份验证 复制链接链接已复制到粘贴板!
IdM 支持离线 OTP 身份验证。但是,要能够离线登录,用户必须首先通过单独输入静态密码和 OTP 来在系统在线时进行身份验证:
First factor: static_password Second factor: one-time_password
First factor: static_password
Second factor: one-time_password
如果用户在在线登录时单独输入这两个密码,则即使中央身份验证服务器不可用,用户也可以进行身份验证。请注意,当用户验证离线时,IdM 只提示输入第一个因素的传统静态密码。
IdM 还支持在 First factor
提示符下将静态密码和 OTP 输入在一个字符串中。但是,此方法与离线 OTP 身份验证不兼容。如果用户在单个提示中输入这两个因素,IdM 必须联系中央身份验证服务器以验证凭据,这需要系统在线。
如果您在还离线运行的设备中使用 OTP 身份验证,如笔记本电脑,红帽建议单独输入静态密码和 OTP,以确保离线身份验证可用。否则,IdM 不允许在系统离线后登录。
如果您想从 OTP 离线身份验证中受益,除了单独输入静态和 OTP 密码外,还要确保满足以下条件:
-
/etc/sssd/sssd.conf
文件中的cache_credentials
选项被设置为True
,这会启用缓存第一个因素密码。 -
第一个因素静态密码满足在
/etc/sssd/sssd.conf
中设置的cache_credentials_minimal_first_factor_length
选项中定义的密码长度要求。默认最小长度为 8 个字符。有关选项的详情,请查看sssd.conf (5)
手册页。
即使 /etc/sssd/sssd.conf
文件中的 krb5_store_password_if_offline
选项被设置为 true,当系统返回到在线状态时,SSSD 不会尝试刷新 Kerberos 票据授予票(TGT)。这是因为,在此时,一次性密码(OTP)可能已经无效。要获得新的 TGT,用户必须使用这两个因素重新进行身份验证。