7.13.2. UserFederationProvider versus UserStorageProvider


首先要注意的是,UserFederationProvider 是一个完整的接口。您在此界面中实施每个方法。但是,UserStorageProvider 会根据需要把这个接口分为多个您实现的功能接口。

UserFederationProvider.getUserByUsername ()getUserByEmail () 在新的 SPI 中具有完全对应的项。两者之间的差别在于您导入的方式。如果您要继续导入策略,您不再调用 KeycloakSession.userStorage ().addUser () 来在本地创建用户。相反,您调用 KeycloakSession.userLocalStorage ().addUser ()userStorage () 方法不再存在。

UserFederationProvider.validateAndProxy () 方法已移至可选的功能接口 ImportedUserValidation。如果您要将早期供应商按原样移植,则需要实施此接口。另请注意,在之前的 SPI 中,每次访问用户时都会调用此方法,即使本地用户位于缓存中。在后续的 SPI 中,只有从本地存储加载本地用户时,才会调用此方法。如果缓存本地用户,则不会调用 ImportedUserValidation.validate () 方法。

后续 SPI 不再存在 UserFederationProvider.isValid () 方法。

UserFederationProvider 方法 synchronizeRegistrations (), registerUser (), 和 removeUser () 已移到 UserRegistrationProvider 功能接口。这个新接口是可选的,因此如果您的供应商不支持创建和删除用户,您不必实施它。如果您的之前的供应商已切换支持来注册新用户,新的 SPI 支持,如果供应商不支持添加用户,则从 UserRegistrationProvider.addUser () 返回 null

以前基于凭证的 UserFederationProvider 方法现在封装在 CredentialInputValidatorCredentialInputUpdater 接口中,它们也是可选的,具体取决于您支持验证或更新凭证。用于存在于 UserModel 方法的凭证管理。它们也已移至 CredentialInputValidatorCredentialInputUpdater 接口。请注意,如果您没有实现 CredentialInputUpdater 接口,则您的供应商提供的任何凭证都可以在红帽构建的 Keycloak 存储本地覆盖。因此,如果您希望凭证为只读,请实施 CredentialInputUpdater.updateCredential () 方法并返回 ReadOnlyException

UserFederationProvider 查询方法,如 searchByAttributes ()getGroupMembers () 现在被封装在可选的 interface UserQueryProvider 中。如果没有实现这个接口,则无法在管理控制台中查看用户。但是,您仍可以登录。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部