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;
}
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);
}
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;
}
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;
}
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();
}
Aggregations