Class ScriptBasedAuthenticator
- java.lang.Object
- 
- org.keycloak.authentication.authenticators.browser.ScriptBasedAuthenticator
 
- 
- All Implemented Interfaces:
- Authenticator,- Provider
 
 public class ScriptBasedAuthenticator extends Object implements Authenticator AnAuthenticatorthat can execute a configured script during authentication flow.Scripts must at least provide one of the following functions: - authenticate(..)which is called from- Authenticator.authenticate(AuthenticationFlowContext)
- action(..)which is called from- Authenticator.action(AuthenticationFlowContext)
 Custom Authenticator'sshould at least provide theauthenticate(..)function. The following scriptBindingsare available for convenient use within script code.- scriptthe- ScriptModelto access script metadata
- realmthe- RealmModel
- userthe current- UserModel
- sessionthe active- KeycloakSession
- authenticationSessionthe current- AuthenticationSessionModel
- httpRequestthe current- HttpRequest
- LOGa- Loggerscoped to- ScriptBasedAuthenticator
 Note that the uservariable is only defined when the user was identified by a preceeding authentication step, e.g. by theUsernamePasswordFormauthenticator.Additional context information can be extracted from the contextargument passed to theauthenticate(context)oraction(context)function.An example ScriptBasedAuthenticatordefinition could look as follows:AuthenticationFlowError = Java.type("org.keycloak.authentication.AuthenticationFlowError"); function authenticate(context) { var username = user ? user.username : "anonymous"; LOG.info(script.name + " --> trace auth for: " + username); if ( username === "tester" && user.getAttribute("someAttribute") && user.getAttribute("someAttribute").contains("someValue")) { context.failure(AuthenticationFlowError.INVALID_USER); return; } context.success(); }- Author:
- Thomas Darimont
 
- 
- 
Constructor SummaryConstructors Constructor Description ScriptBasedAuthenticator()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaction(AuthenticationFlowContext context)Called from a form action invocation.voidauthenticate(AuthenticationFlowContext context)Initial call for the authenticator.voidclose()booleanconfiguredFor(KeycloakSession session, RealmModel realm, UserModel user)Is this authenticator configured for this user.protected AuthenticatorConfigModelgetAuthenticatorConfig(AuthenticationFlowContext context)booleanrequiresUser()Does this authenticator require that the user has already been identified? That AuthenticatorContext.getUser() is not null?voidsetRequiredActions(KeycloakSession session, RealmModel realm, UserModel user)Set actions to configure authenticator- 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.keycloak.authentication.AuthenticatorareRequiredActionsEnabled, getRequiredActions
 
- 
 
- 
- 
- 
Method Detail- 
authenticatepublic void authenticate(AuthenticationFlowContext context) Description copied from interface:AuthenticatorInitial call for the authenticator. This method should check the current HTTP request to determine if the request satifies the Authenticator's requirements. If it doesn't, it should send back a challenge response by calling the AuthenticationFlowContext.challenge(Response). If this challenge is a authentication, the action URL of the form must point to /realms/{realm}/login-actions/authenticate?code={session-code}&execution={executionId} or /realms/{realm}/login-actions/registration?code={session-code}&execution={executionId} {session-code} pertains to the code generated from AuthenticationFlowContext.generateAccessCode(). The {executionId} pertains to the AuthenticationExecutionModel.getId() value obtained from AuthenticationFlowContext.getExecution(). The action URL will invoke the action() method described below.- Specified by:
- authenticatein interface- Authenticator
 
 - 
actionpublic void action(AuthenticationFlowContext context) Description copied from interface:AuthenticatorCalled from a form action invocation.- Specified by:
- actionin interface- Authenticator
 
 - 
getAuthenticatorConfigprotected AuthenticatorConfigModel getAuthenticatorConfig(AuthenticationFlowContext context) 
 - 
requiresUserpublic boolean requiresUser() Description copied from interface:AuthenticatorDoes this authenticator require that the user has already been identified? That AuthenticatorContext.getUser() is not null?- Specified by:
- requiresUserin interface- Authenticator
- Returns:
 
 - 
configuredForpublic boolean configuredFor(KeycloakSession session, RealmModel realm, UserModel user) Description copied from interface:AuthenticatorIs this authenticator configured for this user.- Specified by:
- configuredForin interface- Authenticator
- Returns:
 
 - 
setRequiredActionspublic void setRequiredActions(KeycloakSession session, RealmModel realm, UserModel user) Description copied from interface:AuthenticatorSet actions to configure authenticator- Specified by:
- setRequiredActionsin interface- Authenticator
 
 
- 
 
-