2.2. 破坏版本 26.4.2 的变化
2.2.1. acr_values 请求参数不会自动转发到身份提供程序 复制链接链接已复制到粘贴板!
acr_values 请求参数在身份验证过程中不再自动转发到 OpenID Connect 身份提供程序。这个变化通过防止向外部 IDP 意外出现身份验证上下文信息来提高安全性。
如果您依赖 acr_values 参数传播到身份提供程序,现在您必须将 acr_values 请求参数明确设置为身份提供程序配置中的 Forwarded 查询参数 设置。
2.2.2. 在 CLIENT_ATTRIBUTES 和 GROUP_ATTRIBUTE 表中重新创建索引 复制链接链接已复制到粘贴板!
在一些以前的红帽构建的 Keycloak 版本中,EnterpriseDB (EDB)被视为不被支持。现在,这个变化,从这个版本开始支持 EDB Advanced。如果在之前的版本中使用 EDB JDBC 驱动程序连接到 EDB,则一些无效的模式更改会应用到数据库。为缓解这个问题,在模式迁移到这个版本过程中会自动创建一些索引。如果您使用 PostreSQL 数据库(包括 EDB),无论之前版本是否使用了 EDB,则会影响您。
这会影响 CLIENT_ATTRIBUTES 和 GROUP_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
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=xaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
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
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 datasourcesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关数据源选项的更多信息,请参阅配置多个数据源。
- 删除
quarkus.properties中的 quoting (不支持) 如果您现在无法迁移到红帽构建的 Keycloak 数据源选项,请删除额外的数据源名称引用以避免数据源选项映射冲突,以防止出现任何问题。
这意味着您应该在
conf/quarkus.properties中迁移您的配置:quarkus.datasource."user-store".db-kind=postgresql quarkus.datasource."user-store".username=my-username
quarkus.datasource."user-store".db-kind=postgresql quarkus.datasource."user-store".username=my-usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 到没有引号的版本:
quarkus.datasource.user-store.db-kind=postgresql quarkus.datasource.user-store.username=my-username
quarkus.datasource.user-store.db-kind=postgresql quarkus.datasource.user-store.username=my-usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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})。
2.2.5. 用户通过 User API 搜索现在遵循用户配置集设置 复制链接链接已复制到粘贴板!
当通过 User API 查询用户时,用户表示及其属性现在将考虑为域定义的用户配置文件设置。
可能会出现用户表示中的属性不再可用,具体取决于过去返回太多信息的用户配置集配置。
2.2.6. 更正了作为代理发送 OpenID Connect 客户端 secret 时的编码 复制链接链接已复制到粘贴板!
在红帽构建的 Keycloak 充当代理并由 OpenID Connect 连接到另一个身份提供程序的情况下,现在它会在 RFC6749 中指定的正确编码中通过基本身份验证发送客户端凭证。如果您将红帽构建的 Keycloak 配置为在请求正文中发送凭证,则不会受到影响。
这可以防止客户端 ID 或包含密码的问题,如冒号或百分比符号。
要恢复到旧行为,请将客户端身份验证改为弃用的选项 Client secret,在没有 URL 编码的情况下作为 HTTP 基本身份验证发送(client_secret_basic_unencoded)。