diff --git a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java index 22a3569834..e43ca28aec 100755 --- a/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java +++ b/services/src/main/java/org/keycloak/forms/login/freemarker/FreeMarkerLoginFormsProvider.java @@ -586,11 +586,19 @@ public class FreeMarkerLoginFormsProvider implements LoginFormsProvider { public Response createRegistration() { String loginHint = authenticationSession.getClientNote(OIDCLoginProtocol.LOGIN_HINT_PARAM); if (loginHint != null && !loginHint.isEmpty()) { - this.formData = new MultivaluedHashMap<>(); + if (this.formData == null) { + this.formData = new MultivaluedHashMap<>(); + } if(this.realm.isRegistrationEmailAsUsername()) { - this.formData.putSingle("email", loginHint); + String value = this.formData.getFirst("email"); + if (value == null || value.trim().isEmpty()) { + this.formData.putSingle("email", loginHint); + } } else { - this.formData.putSingle("username", loginHint); + String value = this.formData.getFirst("username"); + if (value == null || value.trim().isEmpty()) { + this.formData.putSingle("username", loginHint); + } } }