mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-10 15:32:05 -03:30
Passkeys support in IdpUsernamePasswordForm
closes #41259 Signed-off-by: mposolda <mposolda@gmail.com>
This commit is contained in:
parent
60bf9689ad
commit
0b98cb7466
@ -27,6 +27,7 @@ import org.keycloak.authentication.authenticators.browser.UsernamePasswordForm;
|
||||
import org.keycloak.broker.provider.BrokeredIdentityContext;
|
||||
import org.keycloak.forms.login.LoginFormsProvider;
|
||||
import org.keycloak.models.IdentityProviderModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.utils.FormMessage;
|
||||
import org.keycloak.services.managers.AuthenticationManager;
|
||||
@ -50,6 +51,10 @@ public class IdpUsernamePasswordForm extends UsernamePasswordForm {
|
||||
|
||||
private final static Logger log = Logger.getLogger(IdpUsernamePasswordForm.class);
|
||||
|
||||
public IdpUsernamePasswordForm(KeycloakSession session) {
|
||||
super(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response challenge(AuthenticationFlowContext context, MultivaluedMap<String, String> formData) {
|
||||
return setupForm(context, formData, getExistingUser(context))
|
||||
@ -94,6 +99,10 @@ public class IdpUsernamePasswordForm extends UsernamePasswordForm {
|
||||
|
||||
existingUser.ifPresent(u -> formData.putSingle(AuthenticationManager.FORM_USERNAME, u.getUsername()));
|
||||
|
||||
if (isConditionalPasskeysEnabled(existingUser.orElse(null))) {
|
||||
webauthnAuth.fillContextForm(context);
|
||||
}
|
||||
|
||||
LoginFormsProvider form = context.form()
|
||||
.setFormData(formData)
|
||||
.setAttribute(LoginFormsProvider.REGISTRATION_DISABLED, true)
|
||||
|
||||
@ -18,7 +18,6 @@
|
||||
package org.keycloak.authentication.authenticators.broker;
|
||||
|
||||
import org.keycloak.authentication.Authenticator;
|
||||
import org.keycloak.authentication.authenticators.browser.UsernamePasswordForm;
|
||||
import org.keycloak.authentication.authenticators.browser.UsernamePasswordFormFactory;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
||||
@ -28,11 +27,10 @@ import org.keycloak.models.KeycloakSession;
|
||||
public class IdpUsernamePasswordFormFactory extends UsernamePasswordFormFactory {
|
||||
|
||||
public static final String PROVIDER_ID = "idp-username-password-form";
|
||||
public static final UsernamePasswordForm IDP_SINGLETON = new IdpUsernamePasswordForm();
|
||||
|
||||
@Override
|
||||
public Authenticator create(KeycloakSession session) {
|
||||
return IDP_SINGLETON;
|
||||
return new IdpUsernamePasswordForm(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user