Passwords 将密码存储在密钥斗篷中
我已经创建了一个自定义用户存储提供商,它将根据需要将用户从遗留系统迁移到Key斗篷的本地存储 除密码外,已迁移用户的所有详细信息都存储在KeyClope中Passwords 将密码存储在密钥斗篷中,passwords,migration,store,keycloak,Passwords,Migration,Store,Keycloak,我已经创建了一个自定义用户存储提供商,它将根据需要将用户从遗留系统迁移到Key斗篷的本地存储 除密码外,已迁移用户的所有详细信息都存储在KeyClope中 userModel.setEmail(email); userModel.setEnabled(isEnabled); userModel.setEmailVerified(isEmailVerified); userModel.setFirstName(firstName); userModel.setLastName(lastName);
userModel.setEmail(email);
userModel.setEnabled(isEnabled);
userModel.setEmailVerified(isEmailVerified);
userModel.setFirstName(firstName);
userModel.setLastName(lastName);
我使用上面的代码来存储用户的所有信息,但是我没有找到任何存储密码的方法/类
userModel.setEmail(email);
userModel.setEnabled(isEnabled);
userModel.setEmailVerified(isEmailVerified);
userModel.setFirstName(firstName);
userModel.setLastName(lastName);
谁能帮我一下吗
另外,我正在使用KeyClope-3.3.0-Final版本。您可以使用
session.userCredentialManager().updateCredential(realm, user, UserCredentialModel.password(passwordNew, false));
其中session是您可以在自定义用户存储提供程序中访问的当前keydeposition会话 多亏了Boomer的回答,我成功地在我的实现中实现了isValid功能,它发送验证密码的POST请求,需要触发KeyClope数据库中的密码更新
@Override
public boolean isValid(RealmModel realm, UserModel user, CredentialInput input) {
if (!supportsCredentialType(input.getType()) || !(input instanceof UserCredentialModel)) return false;
UserCredentialModel cred = (UserCredentialModel)input;
// sending a POST request
Response response = userService.validateLogin(user.getUsername(), new EventivalUserCredentialsDto(cred.getValue()));
boolean isValid = HttpStatus.SC_OK == response.getStatus();
if (isValid) {
// save the password to local (keycloak's native) database
session.userCredentialManager().updateCredential(realm, user, cred);
// unset the federation link to never ask again - Import Implementation Strategy
user.setFederationLink(null);
}
return isValid;
}
一旦用户尝试登录,我将尝试从KeyClope登录页面检索密码。我无法使用下面的行获取密码。感谢您的帮助。session.userCredentialManager.getStoredCredentialsrealm,用户;我可以使用UserModel从登录页面检索用户名/电子邮件。