简介
本指南介绍如何升级Keycloak。 建议您从升级Keycloak开始 服务器第一,Keycloak适配器第二。
升级之前,请务必仔细阅读说明,并仔细查看中列出的更改 迁移更改。
升级密钥斗篷服务器
为升级做准备
升级之前,请注意执行升级步骤的顺序。 还要注意潜在问题 这可能发生在升级过程中。 一般情况下,您必须先升级Keycloak服务器,然后再升级 适配器。
-
在应用升级之前,处理所有打开的事务并删除data/tx-object-store/事务目录。
-
备份旧安装 (配置、主题等)。
-
备份数据库。 有关如何备份数据库的详细信息,请参见关系文档 您正在使用的数据库。
-
升级Keycloak服务器。
-
首先在非生产环境中测试升级,以防止任何安装问题暴露在 生产,是最佳实践。
-
请注意,升级后,数据库将不再与旧服务器兼容
-
在生产中升级适配器之前,请确保升级后的服务器正常运行。
-
-
如果需要还原升级,请先还原旧安装,然后从备份副本还原数据库。
-
升级适配器。
升级密钥斗篷服务器
升级适配器之前,升级Keycloak服务器非常重要。
要升级Keycloak服务器,请完成以下步骤:
-
在应用升级之前,处理所有打开的事务并删除data/tx-object-store/事务目录。
-
下载新的服务器存档
-
将下载的存档移动到所需位置。
-
提取档案。 此步骤安装最新Keycloak版本的干净实例。
-
对于独立安装,请将先前安装中的KEYCLOAK_HOME/standalone/目录复制到 新安装中的目录。
对于域安装,请将先前安装中的KEYCLOAK_HOME/domain/目录复制到目录中 在新安装中。
对于域安装,创建空目录KEYCLOAK_HOME/域/部署。
注意: bin目录中的文件不应被以前版本的文件覆盖。 应该手动进行更改。
-
复制已添加到modules目录的任何自定义模块。
-
运行下面适用的升级脚本。
运行独立模式升级脚本
要运行独立模式的升级脚本,请完成以下步骤:
-
如果使用的配置文件与默认文件不同,请编辑迁移脚本以指定新文件名。
-
停止服务器。
-
运行升级脚本:
bin/jboss-cli.sh-file = bin/migrate-standalone.cli
迁移数据库
Keycloak可以自动迁移数据库架构,也可以选择手动迁移。 默认情况下, 首次启动新安装时,数据库将自动迁移。
关系数据库自动迁移
要启用数据库架构的自动升级,请将migrationStrategy属性值设置为 “update”,用于 默认连接sjpa提供程序:
<spi 名称=”连接sjpa”>
<提供者 名称=”默认” 已启用=”真”>
<属性>
...
<属性 名称=”迁移策略” 值=”更新”/>
</属性>
</提供者>
</spi>
或者运行这个CLI命令:
/子系统 = keycloak-server/spi = 连接sjpa/提供程序 = 默认/:map-put (名称 = 属性,键 = 迁移策略,值 = 更新)
使用此设置启动服务器时,如果数据库架构已更改,则会自动迁移数据库 在新版本中。
在具有数百万条记录的巨大表上创建索引很容易花费大量时间
并可能导致升级时的重大服务中断。
对于这些情况,我们添加了用于自动创建索引的阈值 (记录数)。
默认情况下,此阈值为300000
记录。
当记录数高于阈值时,不会自动创建索引,
服务器日志中会有一条警告消息,包括SQL命令,以后可以手动应用。
要更改阈值,请设置索引创建阈值
属性,默认值连接liquibase
提供者:
<spi 名称=”连接liquibase”>
<提供者 名称=”默认” 已启用=”真”>
<属性>
<属性 名称=”索引创建阈值” 值=”300000”/>
</属性>
</提供者>
</spi>
或者运行这个CLI命令:
/子系统 = keycloak-server/spi = connectionsLiquibase/: 添加 (默认-提供程序 = 默认)
/子系统 = keycloak-server/spi = 连接liquibase/提供程序 = 默认/: 添加 (属性 ={indexCreationThreshold => “300000”},启用 = true)
手动关系数据库迁移
要启用手动升级数据库架构,请将migrationStrategy属性值设置为 “manual”,默认为 连接sjpa提供程序:
<spi 名称=”连接sjpa”>
<提供者 名称=”默认” 已启用=”真”>
<属性>
...
<属性 名称=”迁移策略” 值=”手册”/>
</属性>
</提供者>
</spi>
或者运行这个CLI命令:
/子系统 = keycloak-server/spi = 连接sjpa/提供程序 = 默认/:map-put (名称 = 属性,键 = 迁移策略,值 = 手动)
使用此配置启动服务器时,它会检查是否需要迁移数据库。 所需的更改 写入到SQL文件中,您可以对该文件进行检查并手动对数据库运行。 有关如何 将此文件应用于数据库,请参阅您正在使用的关系数据库的文档。 更改后 写入文件后,服务器退出。
迁移主题
如果您创建了任何自定义主题,则必须将它们迁移到新服务器。 对内置主题的任何更改都可能 需要反映在您的自定义主题中,具体取决于您自定义的方面。
您必须将自定义主题从旧服务器 “主题” 目录复制到新服务器 “主题” 目录。 之后,您需要查看下面的更改,并考虑是否需要将更改应用于您的自定义主题。
总而言之:
-
如果您已自定义下面列出的任何更改的模板,则需要比较基本主题中的模板 要查看是否需要进行更改。
-
如果您已自定义任何样式并扩展了Keycloak主题,则需要查看对 风格。 如果要扩展基本主题,则可以跳过此步骤。
-
如果您有自定义消息,则可能需要更改键或值或添加其他消息。
迁移模板
如果您已自定义任何模板,则需要仔细查看对模板所做的更改 决定是否需要将这些更改应用于自定义模板。 很可能你需要应用相同的 更改自定义模板。 如果您尚未自定义任何列出的模板,则可以跳过此部分。
最佳实践是使用diff工具比较模板,以查看可能需要对模板进行哪些更改 定制模板。 如果您仅进行了较小的更改,则将更新后的模板与您的模板进行比较会更简单 定制模板。 但是,如果您进行了许多更改,则将新模板与您的模板进行比较可能会更容易 自定义的旧模板,因为这将显示您需要进行哪些更改。
下面的屏幕截图比较了来自登录主题的info.ftl模板和一个示例自定义主题:
通过此比较,很容易识别出第一个更改 (“Hello world!!”) 是一个定制,而 第二个更改 (“if pageRedirectUri”) 是对基本主题的更改。 通过将第二个更改复制到您的自定义模板, 您已成功更新您的自定义模板。
对于替代方法,以下屏幕截图将旧安装中的info.ftl模板与 新安装中更新的info.ftl模板:
通过此比较,很容易确定基本模板中已更改的内容。 然后你必须手动 对您修改后的模板进行相同的更改。 由于这种方法不如第一种方法简单,因此只能使用 如果第一种方法不可行,这种方法。
升级Keycloak适配器
首先升级Keycloak服务器,然后升级适配器,这一点很重要。 的早期版本 适配器可能适用于更高版本的Keycloak服务器,但早期版本的Keycloak服务器可能无法 使用适配器的更高版本。
与旧适配器的兼容性
如上所述,我们尝试支持Keycloak server的较新版本与适配器的较旧版本一起使用。 但是,在某些情况下,我们需要在Keycloak服务器端包含修复程序,这可能会破坏与旧版本的兼容性 适配器的一部分。 例如,当我们实现OpenID Connect规范的新方面时,哪个较旧的客户端适配器版本 不知道。
在这些情况下,我们添加了兼容模式。 对于OpenId Connect客户端,有一个名为OpenID连接兼容模式
在Keycloak管理控制台中,在带有客户端详细信息的页面上。 在这里,您可以禁用Keycloak服务器的一些新方面
以保持与较旧的客户端适配器的兼容性。 更多详细信息可在各个开关的工具提示中找到。
升级EAP适配器
要升级WildFly适配器,请完成以下步骤:
-
下载新的适配器存档。
-
删除以前的适配器模块
WILDFLY_HOME/模块/系统/附加组件/Keycloak/
目录。 -
将下载的档案解压到WILDFLY_HOME中。
升级密钥斗篷管理客户端
首先升级Keycloak服务器,然后升级admin-client,这一点很重要。 的早期版本 管理员客户端可能适用于更高版本的Keycloak服务器,但早期版本的Keycloak服务器可能无法 使用管理员客户端的更高版本。 建议使用与所使用的相匹配的admin-client版本 Keycloak服务器版本。
迁移更改
迁移到13.0.0
需要手动迁移步骤
当独立的.xml包含对任何SmallRye模块的引用时,需要手动更改。
SmallRye模块已从基础WildFly发行版中删除,并且服务器未启动
如果配置引用了它们。 因此,如果配置在独立。xml
指的是这些模块,
服务器配置迁移通过migrate-standalone.cli
在对配置进行任何更改之前失败。
在这种情况下,要执行服务器配置迁移,您必须手动删除所有引用的行
小黑麦模块。 在默认配置中,您需要专门删除以下几行:
<扩展 模块=”org.wildfly.extension.microprofile.config-smallrye”/>
<扩展 模块=”org.wildfly.extension.microprofile.health-smallrye”/>
<扩展 模块=”org.wildfly.extension.microprofile.metrics-smallrye”/>
<子系统 xmlns=”urn:wildfly:microprofile-config-smallrye:1.0”/>
<子系统 xmlns=”瓮: 野蝇: 微档案-健康-小黑麦: 2.0” 启用安全性=”假” 空-活性-检查-状态=”$ {环境。mp_health_empty_liveness_check_status: UP}” 空-准备-检查-状态=”${env.Mp_health_empty_readiness_check_status: UP}”/>
<子系统 xmlns=”瓮: 野蝇: 微档案-度量-小黑麦: 2.0” 启用安全性=”假” 暴露的子系统=”*” 前缀=”${wildfly.metrics.prefix:wildfly}”/>
升级到Wildfly 23
Keycloak服务器已升级为使用Wildfly 23作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 23服务器使用的版本。 例如,Infinispan现在
11.0.9。最终
。 - 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 但是,以下是最重要的更改,您可能需要 如果您自己进行了配置更改:-
的
模块
Infinispan缓存容器的属性现在是已弃用(未使用) 并且是替换为的模块
属性, 表示与此缓存容器的配置相关联的模块集。 此外,还有额外的 对各种元素的属性的更改,源自使用Wildfly 23作为基础容器。 例如, 的托管执行器服务
和托管-计划-执行器-服务
元素现在认识到新的挂-任务-终止-期
属性。 见Wildfly 23完整型号参考有关详细信息。
-
升级到Wildfly 22
Keycloak服务器已升级为使用Wildfly 22作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 22服务器使用的版本。 例如,Infinispan现在
11.0.8。最终
。 - 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 但是,以下是最重要的更改,您可能需要 如果您自己进行了配置更改:-
的Eclipse微配置文件配置,Eclipse微轮廓健康,以及Eclipse微轮廓度量子系统被替换为野蝇健康子系统和基本指标的WildFly子系统。
-
默认的Wildfly配置现在使用使用Elytron自动生成的自签名证书的功能。 参考一个专用的
应用ssc
服务器SSL上下文部分有关详细信息。
-
迁移到12.0.2
只读属性
增加了对只读用户属性的支持。 这包括用户属性,这些属性不应该由用户编辑 或由管理员在使用REST API或Keycloak用户界面更新用户时。 这可能很重要,尤其是如果你 使用:
-
自定义用户存储提供程序
-
自定义身份验证器
-
自定义Javascript授权策略,该策略基于某些用户属性建立授权
-
X.509身份验证器,具有用于将X.509证书映射到用户身份的自定义属性
-
任何其他自定义功能,其中某些用户属性用作存储身份验证/授权/身份上下文的元数据,而不是 而不是简单的用户配置文件信息。
请参阅中的详细信息威胁模型缓解章节。
迁移到12.0.0
升级到Wildfly 21
Keycloak服务器已升级为使用Wildfly 21作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 21服务器使用的版本。 例如,Infinispan现在是11.0.4。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 但是,以下是最重要的更改,您可能需要 如果您自己进行了配置更改:-
的
对象-内存
Infinispan缓存的元素现在是已弃用(未使用) 并且是替换为的堆内存
元素。
-
跳过创建用于Docker协议身份验证的用户会话
使用Docker协议成功进行身份验证后,不会创建任何用户会话。 有关详细信息,请参阅服务器管理指南。
升级到模式飞行4
Keycloak登录主题组件已升级到PatternFly 4。
旧的PatternFly 3与新的PatternFly 3同时运行,因此可以保留PF3组件。
但是,对登录主题的设计进行了一些更改。 由于它们,请升级您的自定义登录主题。
可以在Keycloak/例子/主题/日出
目录。
不需要额外的设置。
默认情况下,无需刷新令牌即可授予客户端凭据
在此Keycloak版本中,OAuth2客户端凭据授予端点默认情况下不会发出刷新令牌。 此行为与OAuth2规范一致。
作为此更改的副作用,成功进行客户端凭据身份验证后,不会在Keycloak服务器端创建用户会话,从而导致
在提高性能和内存消耗方面。 鼓励使用客户端凭据授予的客户端停止使用
刷新令牌,而是始终在每个请求中使用grant_type = 客户端 _ 凭据
而不是使用刷新令牌
作为授权类型。
与此相关,Keycloak支持撤销OAuth2撤销端点中的访问令牌,因此允许客户端
如果需要,撤销个人访问令牌。
为了向后兼容,存在坚持旧版本行为的可能性。 使用此功能时,刷新令牌仍将在
将创建具有客户端凭据授予和用户会话的成功身份验证。 这可以为中的特定客户端启用
Keycloak管理控制台,在客户端详细信息部分中OpenID连接兼容模式
用开关使用刷新令牌进行客户端凭据授予
。
迁移到11.0.0
升级到Wildfly 20
Keycloak服务器已升级为使用Wildfly 20作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 20服务器使用的版本。 例如,Infinispan现在是10.1.8。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为它们不再经过测试。
-
建议使用
协议版本
属性添加到远程商店
配置Infinispan缓存时的元素。 当连接到Infinispan服务器9.4.18时,推荐版本的hotrod协议版本被2.9为Infinispan 库版本在Keycloak服务器和Infinispan服务器之间有所不同。 有关更多详细信息,请参见 跨数据中心文档。 -
建议使用
远程存储启用
下的财产连接
子系统。 有关更多详细信息, 请参阅跨数据中心文档。
-
LDAP no-导入错误修正
在以前的Keycloak版本中,当LDAP提供程序配置为导入用户
关闭,可以更新
用户,即使某些非LDAP映射属性已更改。 这种情况导致了令人困惑的行为,当属性似乎被更新时,
但事实并非如此。 在当前版本中,如果更改了任何非LDAP映射属性,则根本不允许执行更新。
这不应影响大多数部署,但在某些罕见情况下可能会受到影响。 例如,如果你以前 尝试使用admin REST API更新用户,并且该用户的属性更改不正确,因此可以进行更新。 与 当前版本,无法进行更新,您将立即被告知原因。
用户模型更改
田野用户名
,电子邮件
,名字
和姓氏
在用户模型
迁移到自定义属性,作为在即将发布的版本中将更复杂的用户配置文件添加到Keycloak的准备。
如果数据库包含具有该确切名称的自定义属性的用户,则需要在升级之前迁移自定义属性。 此迁移不会自动发生。 否则,它们将不再被从数据库中读取,并可能被删除。
这种情况意味着用户名
现在也可以通过以下方式访问和设置用户模型。getFirstAttribute (用户模型。用户名)
。 其他领域也存在类似的含义。
SPIs子类化的实现者用户模型
直接或间接应确保之间的行为设置用户名
和setSingleAttribute (用户模型。用户名,…)
(与其他字段相似) 是一致的。
如果策略评估功能的用户在评估中使用属性的数量,则必须调整其策略,因为默认情况下,每个用户现在将具有四个新属性。
的公共API用户模型
没有改变。 无需更改访问用户数据的前端资源或SPIs。
此外,数据库还没有改变。
Instagram IdP迁移到新的API
Instagram IdP现在使用新的API,就像旧的旧版API一样已弃用。 这需要获取新的API凭据。 有关详细信息, 请参考服务器管理指南。
对于使用Instagram IdP的现有用户,尤其是唯一身份验证的用户,需要特别注意 选项。 这些用户必须在2020年9月30日前使用Instagram IdP登录Keycloak。 那一天之后,他们将拥有 使用不同的身份验证方法 (如密码) 登录以手动更新其Instagram社交链接,或创建 Keycloak的新帐户。 这是因为Instagram用户id在新旧API之间不兼容,但是 新的API暂时返回新的和旧的用户id以允许迁移。 Keycloak一旦用户自动迁移ID 登录。
移除非标准令牌自省端点
在以前的版本中,Keycloak宣传了两个内省端点:令牌 _ 反省 _ 端点
和反省 _ 终点
。
后者是由RFC-8414。 前者,以前被弃用,
现已被移除。
迁移到9.0.1
JavaScript适配器中的传统承诺
不再需要在JavaScript适配器中设置promiseType,并且两者同时可用。 它是
建议更新应用程序以使用本机promise API (然后
和抓住
) 尽快作为旧版API
(成功
和错误
) 将在某个时候被移除。
重复的顶级组
版本9.0.1修复了一个问题,该问题可能会在领域中创建重复的顶级组。 然而,存在 以前重复的组会使升级过程失败。 Keycloak服务器可能会受到此问题的影响 如果它使用的是H2、MariaDB、MySQL或PostgreSQL数据库。 在启动升级之前,请检查服务器是否包含 重复的顶级组。 例如,可以在数据库级别执行以下SQL查询以列出它们:
从KEYCLOAK_GROUP中选择REALM_ID,NAME,COUNT(*),其中PARENT_GROUP为空组BY REALM_ID,NAME具有COUNT(*) > 1;
每个领域中只能存在一个具有相同名称的顶级组。 重复项应在
升级。 升级中的错误包含消息更改设置元INF/jpa-changelog-9.0.1.xml::9.0.1-
KEYCLOAK-12579-add-not-null-constraint::keycloak失败。
迁移到8.0.2
更多身份验证流程更改
- 在同一流程中不支持必需和替代执行
-
在以前的版本中,可以在同一级别的同一身份验证流程中具有必需的和替代的执行。 这种方法存在一些问题,我们在身份验证SPI中进行了重构,这意味着不考虑这一点 有效了。 如果在同一级别配置了替代执行和所需执行,则替代执行被视为禁用。 因此,当迁移到最新版本时,您的现有身份验证流将自动迁移,保留与以前版本中相同的行为。 如果它们包含与某些必需执行相同级别的替代执行,则替代执行将被添加到单独的必需子流中。 这个 应确保特定身份验证流程的行为与以前的版本相同/相似。 我们总是推荐 要双重检查您的身份验证流的配置,并对其进行测试,以双重检查是否一切正常。 如果您有更多具有自定义身份验证器实现的自定义身份验证流,则此建议尤其正确。
迁移到8.0.0
升级到Wildfly 18
Keycloak服务器已升级为使用Wildfly 18作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 18服务器使用的版本。 例如,Infinispan现在是9.4.16。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
将脚本部署到服务器
到目前为止,允许管理员通过Keycloak管理控制台将脚本上传到服务器,以及 通过RESTful Admin API。
目前,这种能力是禁用默认情况下,用户应该更喜欢直接将脚本部署到服务器。 有关更多详细信息, 请看看JavaScript提供商。
身份验证流更改
我们做了一些与身份验证流程相关的重构和改进,这需要在迁移过程中注意。
- 删除了可选的执行要求
-
关于迁移,最重要的更改是从身份验证执行中删除对可选要求的支持,并且 将其替换为有条件的需求,这允许更大的灵活性。 中配置的现有可选身份验证器 以前的版本被条件子流替换。 这些子流具有
条件-用户配置
条件配置 作为第一次执行,以及先前可选的身份验证器 (例如OTP表格
) 作为第二次执行。 从用户的角度来看, 身份验证期间的行为与以前的版本相同。 - Java SPI中的更改
-
Java身份验证SPI和凭据提供程序SPI中存在一些更改。 接口
认证器
没有改变, 但是,如果您正在开发更高级的身份验证器,则可能会受到影响,这些身份验证器引入了一些新的凭据类型 (凭证模型
)。 在凭证提供者
接口和一些新接口的介绍,如凭据验证器
。 还有你 如果您的身份验证器支持可选执行要求,则可能会受到影响。 建议仔细检查最新的身份验证 有关更多详细信息,请参阅服务器开发指南中的示例。 - Freemarker模板更改
-
freemarker模板中存在一些更改。 如果您使用自定义freemarker有自己的主题,则可能会受到影响 登录表单或某些帐户表单的模板,尤其是与OTP相关的表单。 建议在 最新的Keycloak中的Freemarker模板,并根据它对齐您的模板。
迁移到7.0.0
升级到Wildfly 17
Keycloak服务器已升级为使用Wildfly 17作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 17服务器使用的版本。 例如,Infinispan现在是9.4.14。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
迁移到6.0.0
升级到Wildfly 16
Keycloak服务器已升级为使用Wildfly 16作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 16服务器使用的版本。 例如,Infinispan现在是9.4.8。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
新的可选客户端范围
我们增加了一个新的微轮廓-jwt
可选的客户端范围,用于处理中定义的声明MicroProfile/JWT Auth规范。
这个新的客户端作用域定义了协议映射器,以将经过身份验证的用户的用户名设置为upn
索赔和
将领域角色设置为组
索赔。
将提示 = 无传播到默认IDP的能力
我们在OIDC身份提供程序配置中添加了一个名为接受提示 = 无来自客户端的转发
确定国内流离失所者
能够处理转发的请求,其中包括提示 = 无
查询参数。
到目前为止,当收到带有提示 = 无
一个领域会返回一个登录 _ 必需
如果用户是
在未检查用户是否已通过IDP身份验证的情况下未在领域中进行身份验证。 从现在开始,如果默认
可以为身份验证请求确定IDP (通过使用kc_idp_hint
查询参数或通过设置默认IDP
对于领域),如果接受提示 = 无来自客户端的转发
IDP已启用开关,身份验证请求被转发到IDP
以检查用户是否已在那里进行身份验证。
重要的是要注意,仅在指定了默认IDP的情况下才考虑此切换,在这种情况下,我们知道 在哪里转发身份验证请求,而不必提示用户选择IDP。 如果无法确定默认IDP 我们不能假设哪一个将用于满足身份验证请求,因此不执行请求转发。
迁移到5.0.0
升级到Wildfly 15
Keycloak服务器已升级为使用Wildfly 15作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 15服务器使用的版本。 例如,Infinispan现在是9.4.3。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
迁移到4.8.2
Google身份提供商已更新为使用Google登录身份验证系统
截至4.8.1版本的Keycloak中的Google身份提供商实现依赖于Google + API端点 用于授权和获取用户配置文件的端点。 从3月2019日起,Google将取消支持 对于Google + API,支持新的Google登录身份验证系统。 Keycloak身份提供程序已更新 要使用新的端点,因此如果使用此集成,请确保升级到Keycloak版本4.8.2或更高版本。
如果您遇到错误,说在目录中找不到应用程序标识符,则必须在 谷歌API控制台门户以获取新的应用程序id和机密。
您可能需要为Google用户提供的非标准声明调整自定义映射器 信息端点,并通过Google登录API以不同的名称提供。 请查阅谷歌文档 有关可用索赔的最新信息。
LinkedIn社交经纪人更新到LinkedIn api的版本2
因此,使用LinkedIn,所有开发人员都需要迁移到其api和OAuth 2.0的2.0版本。 因此,我们已经更新了 我们的LinkedIn社交经纪人。
使用此代理的现有部署在使用的版本2获取用户的配置文件时可能会开始出现错误 LinkedIn api。 此错误可能与缺少授予用于配置代理的客户端应用程序的权限有关 在身份验证过程中,可能无权访问配置文件API或请求特定的OAuth2作用域。
即使对于新创建的LinkedIn客户端应用程序,您也需要确保客户端能够请求r_liteprofile
和
R _ 电子邮件地址
OAuth2作用域,至少客户端应用程序可以从https://api.linkedin.com/v2/me
端点。
由于LinkedIn在访问会员信息方面施加的这些隐私限制,以及由
当前会员的个人资料API,LinkedIn社交经纪人
现在使用会员的电子邮件地址作为默认用户名。 这意味着R _ 电子邮件地址
总是在以下情况下设置
在身份验证期间发送授权请求。
迁移到4.6.0
新的默认客户端范围
我们添加了新的领域默认客户端范围角色
和网络起源
。 这些客户端作用域包含协议
映射器将用户的角色和允许的web origins添加到令牌中。 在迁移过程中,这些客户端作用域应该是
自动添加到所有OpenID Connect客户端作为默认客户端作用域。 因此,在数据库之后不需要设置
迁移完成。
协议映射器SPI添加
与此相关,存在对 (不受支持的) 协议映射器SPI的一小部分。 只有当你
实现了一个自定义的ProtocolMapper。 一个新的获取优先级 ()
介绍了在ProtocolMapper接口上的方法。 该方法具有
默认实现设置为返回0。 如果您的协议映射器实现依赖于访问令牌中的角色realmAccess
或者资源访问
属性,您可能需要增加映射器的优先级。
观众解决问题
自动添加经过身份验证的用户在令牌中至少具有一个客户端角色的所有客户端的受众
到澳元
现在在访问令牌中声明。 另一方面,访问令牌可能不会自动包含
为其发行的前端客户端。 阅读服务器管理指南有关更多详细信息。
JavaScript适配器承诺
要将本机JavaScript promise与JavaScript适配器一起使用,现在需要设置承诺类型
到原生
在
init选项。
在过去,如果本地承诺可用,则返回一个包装器,该包装器同时提供了遗留的Keycloak承诺和
土著承诺。 这导致了问题,因为错误处理程序并不总是在本机错误事件之前设置,
导致未捕获 (承诺)
错误。
Microsoft Identity Provider已更新为使用Microsoft Graph API
Keycloak至4.5.0版本的Microsoft身份提供程序实现依赖于实时SDK 用于授权和获取用户配置文件的端点。 从2018年11月开始,微软正在取消支持 对于支持新的Microsoft Graph API的实时SDK API。 Keycloak身份提供程序已更新 要使用新的端点,因此如果正在使用此集成,请确保升级到Keycloak版本4.6.0或更高版本。
在 “实时SDK应用程序” 下注册的旧版客户端应用程序将无法与Microsoft Graph端点一起使用 由于应用程序的id格式的更改。 如果您遇到错误,说应用程序标识符 在目录中找不到,您必须在 微软应用程序注册门户以获取新的应用程序id。
升级到Wildfly 14
Keycloak服务器已升级为使用Wildfly 14作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 14服务器使用的版本。 例如,Infinispan现在是9.3.1。最终。
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 - 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
迁移到4.4.0
升级到Wildfly 13
Keycloak服务器已升级为使用Wildfly 13作为底层容器。 这并不直接涉及任何 但是,请注意与迁移相关的这些更改:
- 依赖更新
-
依赖项已更新为Wildfly 13服务器使用的版本。 例如,Infinispan现在是9.2.4。最终和Undertow是2.0.9。最终
- 配置更改
-
中存在一些配置更改
独立 (-ha).xml
和域。xml
文件。 你应该遵循升级密钥斗篷服务器 部分自动处理配置文件的迁移。 但是,以下是最重要的更改,您可能需要 如果您自己进行了配置更改:-
元素
驱逐
在infinispan上缓存现在是已弃用(未使用) 并且是替换为元素对象-内存
-
的
缓存-容器
Infinispan子系统中的元素不认识的jndi-属性
再也没有了。
-
- 跨数据中心复制更改
-
-
您需要将Infinispan服务器升级到9.4.19版本。 较旧的版本可能仍然有效,但它是 不能保证,因为我们不再测试它了。
-
您不再需要在Infinispan服务器配置文件中配置安全性。
-
的
交易
元素需要从Infinispan服务器中复制缓存的配置中删除 配置文件。 这是需要的,因为infinispan bughttps://issues.redhat.com/browse/ ISPN-9323。
-
迁移到4.0.0
客户端模板更改为客户端范围
我们添加了对客户端作用域的支持,这需要在迁移过程中注意。
- 客户端模板更改为客户端范围
-
客户端模板已更改为客户端范围。 如果您有任何客户端模板,它们的协议映射器和角色范围映射 将被保存。
- 名称中替换的空格
-
通过用下划线替换空格来重命名名称中带有空格字符的客户端模板,因为空格是 不允许在客户端作用域的名称中使用。 例如,客户端模板
我的模板
将更改为客户端范围我的模板
。 - 将客户端范围链接到客户端
-
对于具有客户端模板的客户端,相应的客户端范围 现在添加为
默认客户端范围
给客户。 因此协议映射器和角色范围映射将保留在客户端上。 - 领域默认客户端范围未与现有客户端链接
-
在迁移过程中,内置客户端作用域的列表被添加到每个领域,以及
领域默认客户端范围
。 然而, 现有客户端不会升级,新的客户端范围不会自动添加到它们。 还有所有协议映射器和角色 范围映射保留在现有客户端上。 在新版本中,当您创建新客户端时,它会自动具有领域默认客户端作用域 附加到它,它没有附加任何协议映射器。 我们没有在迁移期间更改现有客户端,因为它 将无法正确检测自定义,例如,您将对客户端的协议映射器进行自定义。 如果你想 更新现有客户端 (从它们中删除协议映射器,并将它们与客户端范围链接),您将需要手动完成。 - 同意书需要再次确认
-
客户端范围的更改需要对同意进行重构。 同意现在指向客户端范围,而不是角色或协议映射器。 由于此更改,用户先前确认的持久同意不再有效,用户需要确认 迁移后再次进入同意页面。
- 删除了一些配置开关
-
开关
需要范围参数
从角色细节中删除。 开关需要同意
和同意文本
被移除 来自协议映射器的详细信息。 这些交换机将替换为客户端作用域功能。
对授权服务的更改
我们添加了对UMA 2.0的支持。 此版本的UMA规范引入了一些关于如何从服务器获取权限的重要更改。
以下是UMA 2.0支持引入的主要更改。 见授权服务指南有关详细信息。
- 授权API被删除
-
在UMA 2.0 (UMA 1.0) 之前,客户端应用程序正在使用授权API以RPT格式从服务器获取权限。 新版本 UMA规范已删除了授权API,该API也已从Keycloak中删除。 在UMA 2.0中,现在可以通过使用特定授权类型从令牌端点获得RPTs。 见授权服务指南有关详细信息。
- 权利API被删除
-
随着UMA 2.0的引入,我们决定利用令牌端点和UMA授权类型来允许从Keycloak和 避免使用不同的api。 权利API提供的功能保持不变,并且仍然可以获得集合的权限 一个或多个资源和范围或来自服务器的所有权限,如果没有提供资源或范围。 见授权服务指南有关详细信息。
- UMA发现端点的更改
-
UMA发现文档已更改,请参见授权服务指南有关详细信息。
- 更改密钥斗篷授权JavaScript适配器
-
更改了Keycloak授权JavaScript适配器 (keycloak-authz.js),以符合UMA 2.0引入的更改,同时保持 和以前一样的行为。 主要的变化是你如何调用这两个
授权
和权利
现在的方法 期望代表授权请求的特定对象类型。 这种新的对象类型提供了更多的灵活性 通过支持UMA grant类型支持的不同参数,可以从服务器获取权限。 见授权服务指南有关详细信息。此版本引入的主要更改之一是,您不再需要在 命令访问受资源服务器保护的资源 (不使用UMA时)。 根据策略执行者在资源服务器端的配置方式,您可以只发送常规 访问令牌作为承载令牌和权限仍将被强制执行。
- 更改Keycloak授权客户端Java API
-
升级到新版本的Keycloak Authorization Client Java API时,您会注意到一些表示类 被转移到不同的包中
组织。Keycloak: Keycloak-核心
。
迁移到3.4.2
在OpenID Connect身份验证响应中添加了session_state参数
OpenID Connect会话管理规范要求参数会话状态
存在于OpenID Connect身份验证响应中。
在过去的版本中,我们没有此参数,但是现在Keycloak根据规范的要求默认添加此参数。
但是,某些OpenID Connect / OAuth2适配器,尤其是较旧的Keycloak适配器,可能对此新参数有问题。
例如,在对客户端应用程序成功进行身份验证后,该参数将始终存在于浏览器URL中。
在这些情况下,禁用添加会话状态
身份验证响应的参数。 这是可以做到的
对于Keycloak管理控制台中的特定客户端,在带有OpenID连接兼容模式
,
中描述与旧适配器的兼容性。 专用从身份验证响应中排除会话状态
开关存在,
可以打开它来防止添加会话状态
身份验证响应的参数。
参数会话状态 是在3.4.2中添加的,但是开关从身份验证响应中排除会话状态 被添加了
在4.0.0.Beta1中。 如果您的Keycloak服务器位于3.4.2或3.4.3上,并且遇到问题会话状态 参数,您将需要
将服务器升级到4.0.0.Beta1或更高版本。
|
迁移到3.2.0
新的密码散列算法
我们添加了两种新的密码哈希算法 (pbkdf2-sha256和pbkdf2-sha512)。 新的领域将使用pbkdf2-sha256 具有27500哈希迭代的哈希算法。 由于pbkdf2-sha256比pbkdf2稍快,因此迭代 从20000增加到27500。
如果密码策略包含哈希算法的默认值 (未指定),则升级现有领域 迭代 (20000)。 如果您更改了散列迭代,则需要手动更改为pbkdf2-sha256 使用更安全的哈希算法。
ID令牌需要作用域 = openid
OpenID Connect规范需要该参数范围
有价值openid
用于初始授权请求。 所以穿着Keycloak
2.1.0我们更改了适配器以使用范围 = openid
在重定向URI到Keycloak。 现在我们也更改了服务器部分和ID令牌
将被发送到应用程序,只要范围 = openid
真的很常用。 如果未使用,则ID令牌将被跳过,仅访问令牌和刷新令牌将被发送到应用程序。
这还允许您可以故意省略ID令牌的生成-例如出于空间或性能目的。
直接授予 (OAuth2资源所有者密码凭据授予) 和服务帐户登录 (OAuth2客户端凭据授予) 现在默认情况下也不使用ID令牌。
您需要明确添加范围 = openid
包含ID令牌的参数。
身份验证会话和操作令牌
我们正在努力支持多个数据中心。 作为第一步,我们引入了身份验证会话和操作令牌。 身份验证会话取代了以前版本中使用的客户端会话。 操作令牌目前特别用于场景,其中 身份验证器或requiredActionProvider要求向用户发送电子邮件,并要求用户单击电子邮件中的链接。
以下是与此相关的具体更改,可能会影响您的迁移。
与此相关的第一个变化是引入新的Infinispan缓存身份验证会话
和动作令牌
在独立。xml
或者standalone-ha.xml
。 如果您使用我们的迁移CLI,您
不需要像你的那样关心独立 (-ha).xml
文件将自动迁移。
第二个变化是身份验证SPI方法中某些签名的更改。 如果您使用自定义认证器
或者
要求操作提供程序
。 类AuthenticationFlowContext
和要求操作上下文
现在允许检索身份验证会话
而不是客户端会话。
我们还添加了一些对粘性会话的初始支持。 您可能想要更改您的loadbalancer/proxy服务器,并配置它,如果您不想遭受它的痛苦,并希望拥有更好的性能。
路线被添加到新的身份验证 _ 会话 _ 标识
饼干。 群集文档中的更多信息。
另一个变化是,令牌。getClientSession()
被移除了。 例如,如果您使用的是客户端启动的身份代理链接功能,这可能会影响您。
的脚本基础认证器
将绑定名称从客户会话
到身份验证会话
,因此,如果您使用此身份验证器,则需要更新脚本。
最后,我们向管理控制台添加了一些新的超时。 例如,这允许您为管理员和用户本人触发的电子邮件操作指定不同的超时。
迁移到2.5.1
迁移旧的离线令牌
如果您从2.2.0或更早版本迁移,并且使用了脱机令牌,则脱机令牌的令牌标头中没有KID。 我们在2.3.0中将KID添加到令牌标头中,并具有多个领域密钥的功能,因此Keycloak能够根据令牌KID找到正确的密钥。
对于没有KID的离线令牌,Keycloak 2.5.1将始终使用active realm密钥来找到用于令牌验证的正确密钥。 换句话说,旧的迁移 离线令牌将起作用。 例如,您的用户在1.9.8中请求离线令牌,然后您从1.9.8迁移到2.5.1,然后您的用户将 仍然能够在2.5.1版本中刷新他的旧脱机令牌。
但是存在限制。 一旦您更改了领域活动密钥,用户将无法刷新旧的离线令牌 再也没有了。 因此,在所有具有离线令牌的用户刷新其令牌之前,您不应该更改活动域密钥。 显然是新的 刷新的令牌将在标头中包含KID,因此在所有用户交换其旧的脱机令牌后,您可以自由更改active realm密钥。
迁移到2.4.0
服务器SPI拆分为服务器SPI和服务器SPI Private
keycloak-server-spi模块已拆分为keycloak-server-spi和keycloak-server-spi-private。 内的api keycloak-server-spi不会在次要版本之间更改,而我们保留权利,并且很可能会更改 次要版本之间的keycloak-server-spi-private中的api。
迁移到2.3.0
领域-公钥
不推荐适配器属性
在2.3.0版本中,我们添加了对公钥轮换的支持。 当管理员在Keycloak管理控制台中旋转领域键时,客户端
适配器将能够识别它,并自动从Keycloak下载新的公钥。 然而,这种自动下载新的
如果你没有钥匙,钥匙就完成了领域-公钥
带有硬编码公钥的适配器中的选项。 因此,我们不建议
使用领域-公钥
适配器配置中的选项。
注意此选项仍然受支持,但是如果您真的想在适配器配置中使用硬编码的公钥,它可能会很有用 永远不要从Keycloak下载公钥。 从理论上讲,这样做的原因之一是,如果您在适配器和Keycloak之间存在不受信任的网络,则可以避免中间人攻击, 但是,在这种情况下,使用HTTPS是更好的选择,这将保护适配器和Keycloak之间的所有请求。
迁移到2.2.0
数据库
财产已弃用
的数据库
JPA和Mongo的财产现在都是已弃用并且是替换为 initializeEmpty
和迁移策略
。initializeEmpty
可以将bet设置为真
或者假
并控制空数据库是否应该
被初始化。迁移策略
可以设置为更新
,验证
和手册
。手册
仅支持
关系数据库,并将编写一个SQL文件,对数据库架构进行所需的更改。 请注意
对于Oracle数据库,创建的SQL文件包含设置定义关闭
Oracle SQL客户端理解的命令。
如果脚本被任何其他客户端使用,请用
如果此类功能不适用,您可以选择禁用变量扩展或完全删除它。
迁移到1.9.0
主题和提供者目录已移动
我们已经将主题和提供者目录从独立/配置/主题
和独立/配置/提供程序
到主题
和提供商
分别。
如果您添加了自定义主题和提供程序,则需要将它们移动到新位置。
您还需要更新keycloak-server.json
因为它因此而改变了。
适配器子系统仅在打开Keycloak时才引入依赖关系
以前,如果您已将我们的SAML或OIDC Keycloak子系统适配器安装到WildFly或JBoss EAP中,无论您是否使用Keycloak,我们都会自动将Keycloak客户端jar包含到每个应用程序中。 如果您为该适配器打开了Keycloak身份验证 (通过子系统或web.xml中的auth-method),则这些库现在仅添加到您的部署中
弃用的OpenID连接端点
1.2年,我们弃用了许多与OpenID Connect规范不一致的端点,这些端点现在已被删除。 这也适用于在1.8中替换为新的introspect端点的validate令牌端点。
模块和源代码Re-org
我们的大多数模块和源代码已合并为两个maven模块: keycloak-server-spi和keycloak-services。 SPI接口在server-spi中,实现在keycloak-services中。 所有与JPA相关的模块都已合并到keycloak-model-jpa下。 mongo和Infinispan在模块keycloak-model-mongo和keycloak-model-infinispan下也是如此。
迁移到1.8.0
OAuth2令牌内省
为了增加对OAuth2规范的更多合规性,我们添加了一个新的端点用于令牌内省。
新的端点可以在/领域/{领域名称}/协议/openid-connect/token/introspect
它完全基于RFC-7662
。
的/领域/{领域名称}/协议/openid-连接/验证
端点现在已弃用,我们强烈建议您尽快移至新的自省端点。
进行此更改的原因是RFC-7662提供了更标准和更安全的自省端点。
现在可以从OpenID Connect提供程序的配置中获得新的令牌内省URL/realms/{realm-name}/。知名/openid-configuration
。
在那里你会找到一个有名字的索赔令牌 _ 反省 _ 端点
在回应中。
仅机密客户
允许调用新的端点,这些客户端通常将充当资源服务器并查找令牌元数据,以便执行本地授权检查。
迁移到1.7.0.CR1
默认情况下,客户端禁用直接访问授权
为了增加对OpenID Connect规范的更多合规性,我们在管理控制台 “客户端设置” 页面中添加了标志,您可以在其中启用/禁用各种OpenID Connect/OAuth2流 (标准流、隐式流、直接访问授权、服务帐户)。 作为其中的一部分,我们有直接访问赠款
(对应于OAuth2资源所有者密码证书授予
) 默认情况下,新客户端禁用。
从以前版本迁移的客户端具有直接访问赠款
启用,只要他们有标志仅直接赠款
上。
的仅直接赠款
标记被删除,就像您启用直接访问授权并禁用两个标准 + 隐式流一样,您将获得相同的效果。
我们还添加了内置客户端管理-cli
每个领域。
这个客户有直接访问赠款
启用。
因此,如果您使用的是Admin REST API或Keycloak admin-client,则应更新配置以使用管理-cli
而不是安全-管理-控制台
由于后者默认情况下不再启用直接访问授权。
选项 “首次登录时更新配置文件” 从身份提供程序移动到查看配置文件验证器
在这个版本中,我们添加了首次经纪人登录
,它允许您指定当通过Identity provider (或Social provider) 登录新用户时应该做什么,但是尚无链接到该社交帐户的Keycloak用户。
作为这项工作的一部分,我们添加了选项首次登录流程
到身份提供程序,您可以在其中指定流,然后可以在身份验证
管理控制台中的选项卡。
我们还删除了该选项首次登录时更新配置文件
从身份提供程序设置,并将其移动到审查档案
认证器。
因此,一旦您指定了应该将哪个流用于您的身份提供者 (默认情况下,它是首次经纪人登录
流),你去身份验证
选项卡,选择流程,然后在下面配置选项审查档案
认证器。
迁移到1.6.0。最终
刷新令牌不再可重用的选项
旧版本的Keycloak允许多次重用刷新令牌。
Keycloak仍然允许这样做,但也有一个选择撤销刷新令牌
禁止它。
选项在管理控制台的令牌设置下。
当使用刷新令牌获取新的访问令牌时,还包括新的刷新令牌。
启用选项后,下次刷新访问令牌时应使用此新的刷新令牌。
不可能多次重复使用旧的刷新令牌。
迁移到1.5.0。最终
领域和用户缓存提供程序
Infinispan现在是默认且唯一的领域和用户缓存提供程序。 在非聚集模式下,使用本地Infinispan缓存。 我们还删除了自定义的内存缓存和无缓存提供程序。 如果您在keycloak-server.json mem或none中设置了realmCache或userCache,请删除它们。 由于Infinispan是唯一的提供程序,因此不再需要realmCache和userCache对象,可以将其删除。
迁移到1.3.0。最终
用户联邦提供程序已更改
UserFederationProvider接口几乎没有小的变化。 升级到较新版本时,您可能需要同步您的实现,并升级一些方法,这些方法已更改签名。 更改确实很小,但是需要改善联盟的绩效。
野蝇9.0.0。最终
继上一版本中进行的发行版更改之后,Keycloak的独立下载现在基于WildFly 9.0.0.Final。 这也会影响只能部署到WildFly 9.0.0.Final或JBoss EAP 6.4.0.GA的覆盖。 服务器不再支持WildFly 8.2.0.Final。
WildFly、JBoss EAP和JBoss AS7适配器
现在有3个独立的适配器下载,用于WildFly,JBoss EAP和JBoss AS7:
-
eap6
-
wf9
-
wf8
-
as7
确保你抓住正确的。
您还需要更新standalone.xml,因为扩展模块和子系统定义已更改。 见保护应用程序和服务指南有关详细信息。
从1.2.0.Beta1迁移到1.2.0.RC1
从1.1.0.Final迁移到1.2.0.Beta1
国际空间站
在访问和id令牌中
的价值国际空间站
访问和id令牌中的声明已从领域名称
到领域网址
。
这是OpenID Connect规范所要求的。
如果您使用的是我们的适配器,则无需更改,除非您一直在使用仅承载而没有指定身份验证-服务器-网址
,您现在必须添加它。
如果您使用的是另一个库 (或RSATokenVerifier),则需要在验证时进行相应的更改国际空间站
。
OpenID连接端点
为了符合OpenID Connect规范,身份验证和令牌端点已更改为具有单个身份验证端点和单个令牌端点。
根据规格响应类型
和Grant _ 类型
参数用于选择所需的流。
旧端点 (/领域/{领域名称}/协议/openid-连接/登录
,/领域/{领域名称}/协议/openid-connect/授予/访问
,/领域/{领域名称}/协议/openid-连接/刷新
,/领域/{领域名称}/协议/openid-connect/access/代码
) 现在已弃用,并将在以后的版本中删除。
主题变化
主题的布局发生了变化。
目录层次结构曾经是类型/名称
这现在改为名称/类型
。
例如,名为日出
用于部署到独立/配置/主题/登录/日出
,现在移动到独立/配置/主题/日出/登录
。
进行此更改是为了更容易将同一主题的不同类型的组放入一个文件夹中。
如果您过去将主题部署为JAR,则必须创建需要Java代码的自定义主题加载器。
这已经被简化为只需要一个纯文本文件 (META-INF/keycloak-themes.json
) 来描述罐子中包含的主题。
从1.1.0.Beta1迁移到1.1.0.Beta2
-
适配器现在是一个单独的下载。 它们不包括在设备和战争分发中。 我们现在有太多了,发行版 变得臃肿。
-
组织。Keycloak。适配器。tomcat7.KeycloakAuthenticatorValve
+组织。Keycloak。适配器。tomcat。Keycloak认证阀
-
JavaScript适配器现在具有idToken和idTokenParsed属性。 如果您使用idToken检索名字,电子邮件等,您需要将其更改为idTokenParsed。
-
as7-eap-subsystem和keycloak-wildfly-子系统已合并为一个keycloak-子系统。 如果你有一个现有的独立的.xml 或domain.xml,您将需要在文件顶部附近进行编辑,并将扩展模块名称更改为org.keycloak-子系统。 仅对于AS7,扩展模块名称为org.keycloak.keycloak-as7-subsystem。
-
As7不再支持服务器安装。 您仍然可以使用AS7作为应用程序客户端。
从1.0.x.Final迁移到1.1.0.Beta1
-
RealmModel JPA和Mongo存储模式已更改
-
UserSessionModel JPA和Mongo存储模式已更改,因为这些接口已被重构
-
升级适配器,旧适配器与Keycloak 1.1不兼容。 我们错误地解释了JSON Web令牌和OIDC ID令牌规范。'aud' 声明必须是客户端id,我们将领域名称存储在其中并对其进行验证。
从1.0 RC-1迁移到RC-2
-
许多信息级别的日志记录已更改为调试。 此外,默认情况下,领域不再具有jboss日志审计侦听器。 如果要在用户登录,注销,更改密码等时输出日志,请通过管理控制台启用jboss-logging审计侦听器。
从1.0 Beta 4迁移到RC-1
-
注销REST API已经重构。 注销URI上的GET请求不采用session_state 参数不再。 您必须登录才能注销会话。 您也可以发布到注销REST URI。 此操作需要有效的刷新令牌才能执行注销。 签名与刷新令牌减去grant type form参数相同。 有关详细信息,请参阅文档。
从1.0 Beta 1迁移到Beta 4
-
LDAP/AD配置已更改。 它不再在 “设置” 页面下。 它现在处于 用户 → 联邦。 添加提供程序将向您显示 “ldap” 选项。
-
身份验证SPI已被删除并重写。 新的SPI是UserFederationProvider,是 更加灵活。
-
不需要ssl
+ssl-必需
+全部
+外部
+无
-
数据库架构再次更改。
-
默认情况下,创建的应用程序现在具有完整的范围。 这意味着您不必配置 如果你不想的话,应用程序的范围。
-
用于导入领域数据的JSON文件格式已更改。 现在角色映射在特定的JSON记录下可用 用户。
从1.0 Alpha 4迁移到Beta 1
-
数据库架构已更改。 我们已经将数据库的导出添加到Beta 1,但没有导入的能力 旧版本的数据库。 这将在以后的版本中得到支持。
-
对于除仅承载应用程序之外的所有客户端,您必须指定至少一个重定向URI。 Keycloak 除非您为该应用程序指定了有效的重定向URI,否则将不允许您登录。
-
直接授权API +
上
-
独立/配置/keycloak-server.json
-
JavaScript适配器
-
会话超时
从1.0 Alpha 2迁移到Alpha 3
-
SkeletonKeyToken、SkeletonKeyScope、SkeletonKeyPrincipal和SkeletonKeySession已重命名为: 分别为AccessToken、AccessScope、KeycloakPrincipal和KeycloakAuthenticatedSession。
-
ServletOAuthClient.getBearerToken() 方法签名已更改 它现在返回一个AccessTokenResponse 这样你也可以获得一个刷新令牌。
-
适配器现在检查每个请求的访问令牌过期。 如果令牌过期,他们将 尝试使用保存的刷新令牌在auth服务器上调用刷新。
-
AccessToken中的主题已更改为用户id。
从1.0 Alpha 1迁移到Alpha 2
-
数据库架构已更改。 从Alpha 2开始,我们还没有任何数据迁移实用程序。
-
JBoss和WildFly适配器现在通过WildFly子系统安装。 请检查适配器 安装文档。 现在需要对standalone.xml进行编辑。
-
引入了一种新的凭证类型 “秘密”。 与其他凭证类型不同,它以纯文本形式存储在 数据库,并且可以在管理控制台中查看。
-
不再需要应用程序和OAuth客户端凭据。 这些客户端类型现在是 硬编码使用 “秘密” 凭证类型。
-
由于应用程序和OAuth客户端的 “秘密” 凭据更改,因此您必须更新 您的keycloak.json配置文件,并在应用程序或OAuth客户端中重新生成秘密 管理控制台中的凭据选项卡。