2.2. 破坏版本 26.4.2 的变化


acr_values 请求参数在身份验证过程中不再自动转发到 OpenID Connect 身份提供程序。这个变化通过防止向外部 IDP 意外出现身份验证上下文信息来提高安全性。

如果您依赖 acr_values 参数传播到身份提供程序,现在您必须将 acr_values 请求参数明确设置为身份提供程序配置中的 Forwarded 查询参数 设置。

在一些以前的红帽构建的 Keycloak 版本中,EnterpriseDB (EDB)被视为不被支持。现在,这个变化,从这个版本开始支持 EDB Advanced。如果在之前的版本中使用 EDB JDBC 驱动程序连接到 EDB,则一些无效的模式更改会应用到数据库。为缓解这个问题,在模式迁移到这个版本过程中会自动创建一些索引。如果您使用 PostreSQL 数据库(包括 EDB),无论之前版本是否使用了 EDB,则会影响您。

这会影响 CLIENT_ATTRIBUTESGROUP_ATTRIBUTE 表中的索引。如果这些表包含超过 300,000 个条目,红帽构建的 Keycloak 将默认跳过在自动模式迁移期间创建索引,而是在迁移过程中记录 SQL 语句,以便在红帽构建 Keycloak 启动后手动应用。有关如何配置不同的限制的详情,请参阅 升级指南

2.2.3. 其他数据源的配置更改

在以前的版本中,配置额外数据源的唯一可能方法是使用通常被视为不受支持的原始 Quarkus 属性。同时,支持添加额外的数据源,这会导致不明确的情况。

为了提供配置其他数据源的受支持和用户友好的方式,我们为此引进了新的专用服务器选项。从这个版本开始,使用原始方法通过 Quarkus 属性配置额外的数据源被视为 不被支持

查看以下示例以迁移您的配置:

使用新的 Red Hat build of Keycloak 选项(首选)

配置额外数据源的支持方法是使用新的配置选项。

您可以从 conf/quarkus.properties 中的此配置迁移:

quarkus.datasource.user-store.db-kind=postgresql
quarkus.datasource.user-store.username=my-username
quarkus.datasource.user-store.jdbc.url=jdbc:postgresql://my-remote-postgres:5432/user-store
quarkus.datasource.user-store.jdbc.transactions=xa
Copy to Clipboard Toggle word wrap

conf/keycloak.conf 中进行此配置:

db-kind-user-store=postgres
db-username-user-store=my-username
db-url-full-user-store=jdbc:postgresql://my-remote-postgres:5432/user-store
# transactions XA is enabled by default for datasources
Copy to Clipboard Toggle word wrap

有关数据源选项的更多信息,请参阅配置多个数据源

删除 quarkus.properties 中的 quoting (不支持)

如果您现在无法迁移到红帽构建的 Keycloak 数据源选项,请删除额外的数据源名称引用以避免数据源选项映射冲突,以防止出现任何问题。

这意味着您应该在 conf/quarkus.properties 中迁移您的配置:

quarkus.datasource."user-store".db-kind=postgresql
quarkus.datasource."user-store".username=my-username
Copy to Clipboard Toggle word wrap

到没有引号的版本:

quarkus.datasource.user-store.db-kind=postgresql
quarkus.datasource.user-store.username=my-username
Copy to Clipboard Toggle word wrap

2.2.4. 阅读有关临时锁定用户的信息

在以前的版本中,在 REST 端点中存在一个不一致的问题,导致获取用户(GET /admin/realms/{realm}/users/{user-id}),并搜索用户(GET /admin/realms/{realm}/users)。启用 BruteForce 且用户被临时锁定时,以前的端点将返回 enabled=false,后者将返回 enabled=true。如果用户因为临时锁定而被更新并启用 false,则用户会被永久禁用。现在,当用户临时锁定时,两个端点都会返回 enabled=true。要检查用户是否被临时锁定了 BruteForceUserResource 端点,是否应该被利用(GET /admin/realms/{realm}/attack-detection/brute-force/users/{userId})。

当通过 User API 查询用户时,用户表示及其属性现在将考虑为域定义的用户配置文件设置。

可能会出现用户表示中的属性不再可用,具体取决于过去返回太多信息的用户配置集配置。

在红帽构建的 Keycloak 充当代理并由 OpenID Connect 连接到另一个身份提供程序的情况下,现在它会在 RFC6749 中指定的正确编码中通过基本身份验证发送客户端凭证。如果您将红帽构建的 Keycloak 配置为在请求正文中发送凭证,则不会受到影响。

这可以防止客户端 ID 或包含密码的问题,如冒号或百分比符号。

要恢复到旧行为,请将客户端身份验证改为弃用的选项 Client secret,在没有 URL 编码的情况下作为 HTTP 基本身份验证发送(client_secret_basic_unencoded)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat