public AuthProviderStatus validatePassword(UserModel user, String password) { AuthenticationLinkModel authLink = user.getAuthenticationLink(); if (authLink == null) { // User not yet linked with any authenticationProvider. Find provider with biggest priority where he is and link AuthUser authUser = getUser(user.getLoginName()); authLink = new AuthenticationLinkModel(authUser.getProviderName(), authUser.getId()); user.setAuthenticationLink(authLink); logger.infof("User '%s' linked with provider '%s'", authUser.getUsername(), authUser.getProviderName()); } String providerName = authLink.getAuthProvider(); AuthenticationProviderModel providerModel = getConfiguredProviderModel(realm, providerName); AuthenticationProvider delegate = getProvider(providerName); if (delegate == null || providerModel == null) { return AuthProviderStatus.FAILED; } try { checkCorrectAuthLink(delegate, providerModel, authLink, user.getLoginName()); AuthProviderStatus currentResult = delegate.validatePassword(realm, providerModel.getConfig(), user.getLoginName(), password); logger.debugf("Authentication provider '%s' finished with '%s' for authentication of '%s'", delegate.getName(), currentResult.toString(), user.getLoginName()); return currentResult; } catch (AuthenticationProviderException ape) { logger.warn(ape.getMessage(), ape); return AuthProviderStatus.FAILED; } }
protected AuthUser createAuthenticatedUserInstance(UserModel user) { return new AuthUser(user.getId(), user.getLoginName(), getName()) .setName(user.getFirstName(), user.getLastName()) .setEmail(user.getEmail()); } }
userEntity.setLoginName(userModel.getLoginName()); userEntity.setRealmId(realm.getId());
AuthenticationProvider delegate = getProvider(providerModel.getProviderName()); if (delegate != null) { AuthUser authUser = delegate.getUser(realm, providerModel.getConfig(), user.getLoginName()); if (authUser != null) { String userIdInProvider = delegate.registerUser(realm, providerModel.getConfig(), user.getLoginName()); authLink = new AuthenticationLinkModel(providerModel.getProviderName(), userIdInProvider); user.setAuthenticationLink(authLink); logger.infof("User '%s' registered in provider '%s' and linked", user.getLoginName(), providerModel.getProviderName()); logger.warnf("No providers found where password update is supported for user '%s'", user.getLoginName()); return false; String username = user.getLoginName(); if (delegate.updateCredential(realm,providerModel.getConfig(), user.getLoginName(), password)) { logger.debugf("Updated password in authentication provider '%s' for user '%s'", providerName, username); return true;