第 8 章 配置身份验证


本章涵盖了几个身份验证主题。这些主题包括:

  • 强制严格的密码和一次性密码(OTP)策略。
  • 管理不同的凭证类型。
  • 使用 Kerberos 登录.
  • 禁用并启用内置凭证类型。

8.1. 密码策略

当红帽构建的 Keycloak 创建域时,它不会将密码策略与域关联。您可以设置简单的密码,其长度、安全性或复杂性不有限制。在生产环境中无法接受简单的密码。红帽构建的 Keycloak 有一组通过管理控制台提供的密码策略。

流程

  1. 点菜单中的 Authentication
  2. Policies 选项卡。
  3. Add policy 下拉列表中选择要添加的策略。
  4. 输入应用于所选策略的值。
  5. 点击 Save

    密码策略 Password Policy

保存策略后,红帽构建的 Keycloak 强制执行新用户的策略。

注意

新策略对现有用户无效。因此,请确保从创建域开始设置密码策略,或将"Update password"添加到现有用户,或使用"Expire password"来确保用户在下一个"N"天中更新其密码,这将实际调整为新的密码策略。

8.1.1. 密码策略类型

8.1.1.1. hashAlgorithm

密码不会以明文形式存储。在存储或验证前,红帽使用标准哈希算法构建 Keycloak 哈希密码。

下表中显示了支持的密码哈希算法。

Expand
哈希算法描述

argon2

Argon2 (非FIPS 部署的默认值)

pbkdf2-sha512

带有 SHA512 的 PBKDF2 (用于 FIPS 部署的默认 PBKDF2)

pbkdf2-sha256

带有 SHA256 的 PBKDF2

pbkdf2

带有 SHA1 的 PBKDF2 (已弃用)

与 PBKDF2 相比,强烈建议您尽可能少的 CPU 要求使用 Argon2,同时同时更安全。

服务器的默认密码哈希算法可使用 --spi-password-hashing-provider-default=<algorithm> 配置。

为防止过量内存和 CPU 使用量,Argon2 的并行计算默认限制为 JVM 可用的内核数。要配置 Argon2 哈希提供程序,请使用其供应商选项。

有关如何添加您自己的哈希算法,请参阅 服务器开发人员指南

注意

如果您更改了哈希算法,则存储中的密码哈希将不会改变,直到用户登录为止。

8.1.1.2. 哈希迭代

指定红帽构建 Keycloak 在存储或验证前哈希密码的次数。默认值为 -1,它将默认哈希迭代用于所选哈希算法,如下表中所列。

Expand
哈希算法默认哈希迭代

argon2

5

pbkdf2-sha512

210,000

pbkdf2-sha256

600,000

pbkdf2

1,300,000

注意

在大多数情况下,不应从推荐的默认值更改哈希迭代。迭代的较低值提供不足的安全性,而更高的值则会导致 CPU 电源要求更高。

8.1.1.3. 数字

密码字符串中所需的数字数字数。

8.1.1.4. 小写字符

密码字符串中所需的小写字母数。

8.1.1.5. 大写字符

密码字符串中所需的大写字母数。

8.1.1.6. 特殊字符

密码字符串中所需的特殊字符数。

8.1.1.7. 不是用户名

密码不能与用户名相同。

8.1.1.8. 没有电子邮件

密码不能与用户的电子邮件地址相同。

8.1.1.9. 正则表达式

密码必须与一个或多个定义的 Java 正则表达式模式匹配。有关这些表达式的语法,请参阅 Java 的正则表达式文档

8.1.1.10. 密码过期

密码有效的天数。当天数已过期时,用户必须更改密码。

8.1.1.11. 最近使用

用户不能使用密码。Red Hat build of Keycloak 存储使用的密码历史记录。存储的旧密码数量可在红帽构建的 Keycloak 中进行配置。

8.1.1.12. 最近没有使用(第一天)

密码不能在配置的时间段(以天为单位)重复使用。如果在此期间最后一次设置新密码,则用户将强制提供不同的密码。

8.1.1.13. 密码黑名单

密码不能位于黑名单文件中。

  • 黑名单文件是 UTF-8 纯文本文件,带有 Unix 行结尾。每行都表示一个列入黑名单的密码。
  • 红帽 Keycloak 的构建以区分大小写的方式比较密码。
  • blacklist 文件的值必须是黑名单文件的名称,例如 100k_passwords.txt
  • 默认情况下,将文件针对 ${kc.home.dir}/data/password-blacklists/ 解析。使用以下命令自定义此路径:

    • keycloak.password.blacklists.path 系统属性。
    • passwordBlacklist 策略 SPI 配置的 blacklistsPath 属性。要使用 CLI 配置黑名单文件夹,use --spi-password-policy-password-blacklist-blacklists-path=/path/to/blacklistsFolder

关于 False Positives 的备注

当前的实现使用 BloomFilter 进行快速和内存效率控制检查,例如,给定密码是否包含在黑名单中,因此可能会造成假的正状态。

  • 默认情况下,使用 false 的正概率为 0.01%
  • 要通过 CLI 配置更改假的正的可能性,use --spi-password-policy-password-blacklist-false-positive-probability=0.00001

8.1.1.14. 最大验证期限

指定用户身份验证的最长期限(以秒为单位),用户可以在不重新身份验证的情况下更新密码。值 0 表示用户必须始终与其当前密码重新验证,然后才能更新密码。有关此策略的一些更多详情,请参阅 AIA 部分

注意

当在管理控制台中 所需的 Actions 选项卡中配置所需的操作 更新密码时,可以配置 Maximum Authentication Age。更好的选择是将所需的操作用于配置,因为 Maximum Authentication Age 密码策略可能会在以后被弃用/删除。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat