org.keycloak.authentication

## Interface Authenticator

- All Superinterfaces:
    Provider
  All Known Implementing Classes:
    AbstractDirectGrantAuthenticator, AbstractFormAuthenticator, AbstractIdpAuthenticator, AbstractSetRequiredActionAuthenticator, AbstractUsernameFormAuthenticator, ConditionalOtpFormAuthenticator, CookieAuthenticator, IdpConfirmLinkAuthenticator, IdpCreateUserIfUniqueAuthenticator, IdpEmailVerificationAuthenticator, IdpReviewProfileAuthenticator, IdpUsernamePasswordForm, OTPFormAuthenticator, ResetCredentialChooseUser, ResetCredentialEmail, ResetOTP, ResetPassword, ScriptBasedAuthenticator, SpnegoAuthenticator, UsernamePasswordForm, ValidateOTP, ValidatePassword, ValidateUsername

      public interface Authenticator
      extends Provider

  This interface is for users that want to add custom authenticators to an authentication flow. You must implement this interface as well as an AuthenticatorFactory.
  Version:
    $Revision: 1 $
  Author:
    Bill Burke

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `action(AuthenticationFlowContext context)` Called from a form action invocation.
    `void` | `authenticate(AuthenticationFlowContext context)` Initial call for the authenticator.
    `boolean` | `configuredFor(KeycloakSession session, RealmModel realm, UserModel user)` Is this authenticator configured for this user.
    `boolean` | `requiresUser()` Does this authenticator require that the user has already been identified? That AuthenticatorContext.getUser() is not null?
    `void` | `setRequiredActions(KeycloakSession session, RealmModel realm, UserModel user)` Set actions to configure authenticator

    - ### Methods inherited from interface org.keycloak.provider.Provider

      `close`

- - ### Method Detail

    - #### authenticate

          void authenticate(AuthenticationFlowContext context)

      Initial 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.
      Parameters:
        `context` -

    - #### action

          void action(AuthenticationFlowContext context)

      Called from a form action invocation.
      Parameters:
        `context` -

    - #### requiresUser

          boolean requiresUser()

      Does this authenticator require that the user has already been identified? That AuthenticatorContext.getUser() is not null?
      Returns:

    - #### configuredFor

          boolean configuredFor(KeycloakSession session,
                                RealmModel realm,
                                UserModel user)

      Is this authenticator configured for this user.
      Parameters:
        `session` -
        `realm` -
        `user` -
      Returns:

    - #### setRequiredActions

          void setRequiredActions(KeycloakSession session,
                                  RealmModel realm,
                                  UserModel user)

      Set actions to configure authenticator

Copyright © 2016 JBoss by Red Hat. All rights reserved.