第 8 章 配置身份验证
本章论述了几个身份验证主题。这些主题包括:
- 强制严格的密码和一次性密码(OTP)策略。
- 管理不同的凭证类型。
- 使用 Kerberos 登录。
- 禁用并启用内置凭证类型。
8.1. 密码策略 复制链接链接已复制到粘贴板!
当红帽构建的 Keycloak 创建一个域时,它不会将密码策略与域关联。您可以设置简单的密码,使其长度、安全性或复杂性没有限制。在生产环境中,无法接受简单的密码。红帽构建的 Keycloak 通过管理控制台提供一组密码策略。
流程
- 点菜单中的 Authentication。
- 点 Policies 选项卡。
- 选择要在 Add policy 下拉菜单中添加的策略。
- 输入适用于所选策略的值。
点击 Save。
密码策略
保存策略后,红帽构建的 Keycloak 会为新用户强制执行策略。
新策略对现有用户无效。因此,请确保从域创建开始设置密码策略,或向现有用户添加"更新密码",或者使用"Expire password"以确保用户在下次"N"天中更新其密码,实际上会调整到新的密码策略。
8.1.1. 密码策略类型 复制链接链接已复制到粘贴板!
8.1.1.1. HashAlgorithm 复制链接链接已复制到粘贴板!
密码不会存储在明文中。在存储或验证之前,红帽使用标准哈希算法构建 Keycloak 哈希密码。PBKDF2 是唯一可用的内置和默认算法。有关如何添加您自己的哈希算法,请参阅 服务器开发人员指南。
如果您更改了哈希算法,则存储中的密码哈希不会更改,直到用户登录为止。
8.1.1.2. 哈希迭代 复制链接链接已复制到粘贴板!
指定红帽在存储或验证前的 Keycloak 哈希密码构建的次数。如果 pbkdf2-sha512 用作哈希算法,则默认值为 210,000。如果使用'HashAlgorithm' 策略明确设置了其他哈希算法,则默认散列迭代数可能会有所不同。例如,如果使用'pbkdf2-sha256' 算法,则默认为 600,000;如果 pbkdf2 算法(算法 pbkdf2 对应于 HMAC-SHA1,则默认为 1,300,000)。
红帽构建的 Keycloak 哈希密码,以确保可访问密码数据库的主机操作者无法通过反向工程读取密码。
高哈希迭代值可能会影响性能,因为它需要更高的 CPU 电源。
8.1.1.3. 数字 复制链接链接已复制到粘贴板!
密码字符串中所需的数字数。
8.1.1.4. 小写字符 复制链接链接已复制到粘贴板!
密码字符串中所需的小写字母数。
8.1.1.5. 大写字符 复制链接链接已复制到粘贴板!
密码字符串中所需的大写字母数。
8.1.1.6. 特殊字符 复制链接链接已复制到粘贴板!
密码字符串中所需的特殊字符数。
8.1.1.7. 不是 username 复制链接链接已复制到粘贴板!
密码不能与用户名相同。
8.1.1.8. Not email 复制链接链接已复制到粘贴板!
密码不能与用户的电子邮件地址相同。
8.1.1.9. 正则表达式 复制链接链接已复制到粘贴板!
密码必须与一个或多个定义的 Java 正则表达式模式匹配。有关这些表达式的语法,请参阅 Java 的正则表达式文档。
8.1.1.10. 过期的密码 复制链接链接已复制到粘贴板!
密码有效的天数。当天数已过期时,用户必须更改其密码。
8.1.1.11. 最近使用 复制链接链接已复制到粘贴板!
用户不能使用密码。红帽构建的 Keycloak 存储了已用密码的历史记录。存储的旧密码数量可在红帽构建的 Keycloak 中进行配置。
8.1.1.12. 密码黑名单 复制链接链接已复制到粘贴板!
密码不能位于黑名单文件中。
- 黑名单文件是 UTF-8 纯文本文件,结尾 Unix 行。每行都代表列入黑名单的密码。
- 红帽构建的 Keycloak 以区分大小写的方式比较密码。黑名单中的所有密码都必须为小写。
-
blacklist 文件的值必须是黑名单文件的名称,例如
100k_passwords.txt。 默认情况下,将针对
${kc.home.dir}/data/password-blacklists/解析的文件列入黑名单。使用以下命令自定义此路径:-
keycloak.password.blacklists.path系统属性。 -
passwordBlacklist策略 SPI 配置的blacklistsPath属性。要使用 CLI 配置黑名单文件夹,请使用--spi-password-policy-password-blacklist-blacklists-path=/path/to/blacklistsFolder。
-
关于 False Positives 的备注
当前实施使用 BloomFilter 进行快速和内存效率控制检查,如给定密码是否包含在黑名单中,并可能误报。
-
默认情况下,使用 false 的正概率为
0.01%。 -
要通过 CLI 配置更改假的正概率,请使用
--spi-password-policy-password-blacklist-false-positive-probability=0.00001。
8.1.1.13. 最大身份验证期限 复制链接链接已复制到粘贴板!
指定用户身份验证的最长期限(以秒为单位),用户可在不重新身份验证的情况下更新密码。值 0 表示用户必须始终重新验证其当前密码,然后才能更新密码。有关此策略的详情,请参阅 AIA 部分。