gpt4 book ai didi

java - 使用 keycloak UserStorageProvider SPI 的问题

转载 作者:行者123 更新时间:2023-11-30 05:33:59 26 4
gpt4 key购买 nike

我已经实现了一个自定义的 Keycloak UserStorageProvider SPI(遵循官方文档的第 11 点: https://www.keycloak.org/docs/latest/server_development/index.html#_user-storage-spi ),它执行以下操作:

  1. 根据用户(本地商店中先前不存在的)身份验证外部身份验证服务。
  2. 将(根据我们的自定义服务成功验证)用户保存到Keycloak 本地商店。
  3. 将用户导入到 keycloak 的本地存储后(在用户成功登录),然后管理员就可以映射角色向这些用户从 keycloak 的管理控制台进行资源授权。

我遇到的问题如下:步骤 1 和 2 工作完美。关于步骤 3,我可以使用保存在 keycloak 本地存储中的用户成功登录自己(在外部 UserProvider 上找到它之后),但是(这里是问题的症结所在);一旦我向该导入的用户添加任何角色,我就无法再登录该帐户,并且日志显示从该用户登录时起,我的自定义 UserStorageProvider 不再被使用。不知何故,将角色附加到该用户会使他对我的自定义 UserStorageProvider 不可见(即使我再次删除该角色)。

在我试图实现的最佳情况下,即使在为用户分配角色之后,我也能够“登录”用户(通过外部 SPI 进行身份验证后在本地保存)。

如有任何反馈,我们将不胜感激!!

预先感谢您的建议。

最佳答案

如果将来有人遇到这个问题,当您实现提供者 SPI 时,您有 2 个选项,正如文档提到的。联合存储并将用户导入本地 Keycloak 存储。如果您采用导入/同步策略,则需要将联合链接设置为提供者,如下所示:

<UserModel instance>.setFederationLink(<ComponentModel id>);

如果您不这样做,那么 Keycloak 就无法“记住”那些导入的用户应该由您的提供程序 SPI 处理,并且通常您将无法从自定义提供程序 SPI 中获得预期的行为。

关于java - 使用 keycloak UserStorageProvider SPI 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56991224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com