Search in sources :

Example 1 with LoginFormsProvider

use of org.keycloak.forms.login.LoginFormsProvider in project keycloak by keycloak.

the class AuthenticationProcessor method authenticateOnly.

public Response authenticateOnly() throws AuthenticationFlowException {
    logger.debug("AUTHENTICATE ONLY");
    checkClientSession(false);
    event.client(authenticationSession.getClient().getClientId()).detail(Details.REDIRECT_URI, authenticationSession.getRedirectUri()).detail(Details.AUTH_METHOD, authenticationSession.getProtocol());
    String authType = authenticationSession.getAuthNote(Details.AUTH_TYPE);
    if (authType != null) {
        event.detail(Details.AUTH_TYPE, authType);
    }
    UserModel authUser = authenticationSession.getAuthenticatedUser();
    validateUser(authUser);
    AuthenticationFlow authenticationFlow = createFlowExecution(this.flowId, null);
    Response challenge = authenticationFlow.processFlow();
    if (challenge != null)
        return challenge;
    if (authenticationSession.getAuthenticatedUser() == null) {
        if (this.forwardedErrorMessageStore.getForwardedMessage() != null) {
            LoginFormsProvider forms = session.getProvider(LoginFormsProvider.class).setAuthenticationSession(authenticationSession);
            forms.addError(this.forwardedErrorMessageStore.getForwardedMessage());
            return forms.createErrorPage(Response.Status.BAD_REQUEST);
        } else
            throw new AuthenticationFlowException(AuthenticationFlowError.UNKNOWN_USER);
    }
    if (!authenticationFlow.isSuccessful()) {
        throw new AuthenticationFlowException(authenticationFlow.getFlowExceptions());
    }
    return null;
}
Also used : UserModel(org.keycloak.models.UserModel) Response(javax.ws.rs.core.Response) LoginFormsProvider(org.keycloak.forms.login.LoginFormsProvider)

Example 2 with LoginFormsProvider

use of org.keycloak.forms.login.LoginFormsProvider in project keycloak by keycloak.

the class FormAuthenticationFlow method renderForm.

public Response renderForm(MultivaluedMap<String, String> formData, List<FormMessage> errors) {
    String executionId = formExecution.getId();
    processor.getAuthenticationSession().setAuthNote(AuthenticationProcessor.CURRENT_AUTHENTICATION_EXECUTION, executionId);
    String code = processor.generateCode();
    URI actionUrl = getActionUrl(executionId, code);
    LoginFormsProvider form = processor.getSession().getProvider(LoginFormsProvider.class).setAuthenticationSession(processor.getAuthenticationSession()).setActionUri(actionUrl).setExecution(executionId).setClientSessionCode(code).setFormData(formData).setErrors(errors);
    for (AuthenticationExecutionModel formActionExecution : formActionExecutions) {
        if (!formActionExecution.isEnabled())
            continue;
        FormAction action = processor.getSession().getProvider(FormAction.class, formActionExecution.getAuthenticator());
        FormContext result = new FormContextImpl(formActionExecution);
        action.buildPage(result, form);
    }
    FormContext context = new FormContextImpl(formExecution);
    return formAuthenticator.render(context, form);
}
Also used : LoginFormsProvider(org.keycloak.forms.login.LoginFormsProvider) AuthenticationExecutionModel(org.keycloak.models.AuthenticationExecutionModel) URI(java.net.URI)

Example 3 with LoginFormsProvider

use of org.keycloak.forms.login.LoginFormsProvider in project keycloak by keycloak.

the class AbstractUsernameFormAuthenticator method badPasswordHandler.

// Set up AuthenticationFlowContext error.
private boolean badPasswordHandler(AuthenticationFlowContext context, UserModel user, boolean clearUser, boolean isEmptyPassword) {
    context.getEvent().user(user);
    context.getEvent().error(Errors.INVALID_USER_CREDENTIALS);
    if (isUserAlreadySetBeforeUsernamePasswordAuth(context)) {
        LoginFormsProvider form = context.form();
        form.setAttribute(LoginFormsProvider.USERNAME_HIDDEN, true);
        form.setAttribute(LoginFormsProvider.REGISTRATION_DISABLED, true);
    }
    Response challengeResponse = challenge(context, getDefaultChallengeMessage(context), FIELD_PASSWORD);
    if (isEmptyPassword) {
        context.forceChallenge(challengeResponse);
    } else {
        context.failureChallenge(AuthenticationFlowError.INVALID_CREDENTIALS, challengeResponse);
    }
    if (clearUser) {
        context.clearUser();
    }
    return false;
}
Also used : Response(javax.ws.rs.core.Response) LoginFormsProvider(org.keycloak.forms.login.LoginFormsProvider)

Example 4 with LoginFormsProvider

use of org.keycloak.forms.login.LoginFormsProvider in project keycloak by keycloak.

the class RequiredActionContextResult method form.

@Override
public LoginFormsProvider form() {
    String accessCode = generateCode();
    URI action = getActionUrl(accessCode);
    LoginFormsProvider provider = getSession().getProvider(LoginFormsProvider.class).setAuthenticationSession(getAuthenticationSession()).setUser(getUser()).setActionUri(action).setExecution(getExecution()).setClientSessionCode(accessCode);
    return provider;
}
Also used : LoginFormsProvider(org.keycloak.forms.login.LoginFormsProvider) URI(java.net.URI)

Example 5 with LoginFormsProvider

use of org.keycloak.forms.login.LoginFormsProvider in project keycloak by keycloak.

the class DeviceEndpoint method createVerificationPage.

private Response createVerificationPage(String errorMessage) {
    String execution = AuthenticatedClientSessionModel.Action.USER_CODE_VERIFICATION.name();
    LoginFormsProvider provider = session.getProvider(LoginFormsProvider.class).setExecution(execution);
    if (errorMessage != null) {
        provider = provider.setError(errorMessage);
    }
    return provider.createOAuth2DeviceVerifyUserCodePage();
}
Also used : LoginFormsProvider(org.keycloak.forms.login.LoginFormsProvider)

Aggregations

LoginFormsProvider (org.keycloak.forms.login.LoginFormsProvider)16 Response (javax.ws.rs.core.Response)4 UserModel (org.keycloak.models.UserModel)3 URI (java.net.URI)2 WebAuthnAuthenticatorsBean (org.keycloak.forms.login.freemarker.model.WebAuthnAuthenticatorsBean)2 UserSessionModel (org.keycloak.models.UserSessionModel)2 FormMessage (org.keycloak.models.utils.FormMessage)2 AuthenticationSessionModel (org.keycloak.sessions.AuthenticationSessionModel)2 Challenge (com.webauthn4j.data.client.challenge.Challenge)1 DefaultChallenge (com.webauthn4j.data.client.challenge.DefaultChallenge)1 LinkedList (java.util.LinkedList)1 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 MultivaluedHashMap (javax.ws.rs.core.MultivaluedHashMap)1 MultivaluedMapImpl (org.jboss.resteasy.specimpl.MultivaluedMapImpl)1 AuthenticationFlowException (org.keycloak.authentication.AuthenticationFlowException)1 SerializedBrokeredIdentityContext (org.keycloak.authentication.authenticators.broker.util.SerializedBrokeredIdentityContext)1 BrokeredIdentityContext (org.keycloak.broker.provider.BrokeredIdentityContext)1 EventBuilder (org.keycloak.events.EventBuilder)1 ActionTokenKeyModel (org.keycloak.models.ActionTokenKeyModel)1