gpt4 book ai didi

passwords - keycloak 与联合用户管理密码

转载 作者:行者123 更新时间:2023-12-02 01:46:02 25 4
gpt4 key购买 nike

是否可以通过 keycloak 与联合用户管理密码?我有用户与外部数据库联合,目前也正在从外部数据库检查密码。

在外部数据库中创建该用户然后联合到 keycloak 后,是否可以在 keycloak 中为该用户注册密码?

我的动机是拥有 keycloak 的内置密码重置功能,而不是为此在联合用户上构建额外的 SPI 代码。

最佳答案

您的问题并不清楚,但由于您已经从外部数据库联合了用户,我假设您已经实现了自定义的UserStorageProvider。您还可以根据外部数据库验证密码。因此,我假设您还实现了 CredentialInputValidator 接口(interface)。如果您还没有实现CredentialInputUpdater,我认为您想要实现的目标应该是开箱即用的。

如果您已经实现了CredentialInputUpdater,您可以尝试执行以下操作:在 CredentialInputValidator.isvalid 的实现中,首先检查用户是否配置了本地密码,例如像这样

keycloakSession.userCredentialManager().isConfiguredLocally(realm, user, credentialInput.getType())
  • 如果是这种情况(返回 true),只需让 isValid 返回 false。在这种情况下,Keycloak 应使用其他 CredentialInputValidator 并检查本地配置的密码。
  • 如果情况并非如此(返回false),请根据外部数据库进行密码检查。如果密码有效,则以静默方式将密码迁移到 Keycloak 的本地凭证存储。这可能看起来类似于:
CredentialProvider passwordProvider = keycloakSession.getProvider(CredentialProvider.class, PasswordCredentialProviderFactory.PROVIDER_ID);
if (passwordProvider instanceof CredentialInputUpdater) {
((CredentialInputUpdater) passwordProvider).updateCredential(realm, user, credentialInput);
}

CredentialInputUpdater.updateCredential中,除了数据库中的密码之外,还要确保更新本地存储。

现在您的用户密码将存储在 Keycloak 的本地数据库/凭证存储中,并且内置的密码重置功能应该按预期工作。

关于passwords - keycloak 与联合用户管理密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70881610/

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