<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 16px; font-family: Calibri, sans-serif; ">
<div>Hi,</div>
<div><br>
</div>
<div>I'm getting the error below when I try to add a custom FormAction to a copy of the Registration Form.</div>
<div>What am I doing wrong?</div>
<div>I'm using Keycloak 1.9.1.Final</div>
<div><br>
</div>
<div>Steps:</div>
<ul>
<li>Created class: AccountsFormAction implements FormAction</li><li>Created class: AccountsFormActionFactory implements FormActionFactory, ConfigurableAuthenticatorFactory</li><li>Created file inside of META-INF/services/org.keycloak.authentication.FormActionFactory containing the full qualified name of the AccountsFormActionFactory class</li><li>Copied the JAR to providers folder</li><li>At the admin console, I choose Add execution from Registration-copy1 Registration Form Actions menu</li><li>At the providers list I choose "Accounts Form Action"</li><li>The error below shows when I click Save</li></ul>
<div><br>
</div>
<div><br>
</div>
<div>
<div>2016-04-18 09:02:06,658 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-52) RESTEASY002005: Failed executing POST /admin/realms/accounts/authentication/flows/registration-copy1 registration form/executions/execution: org.jboss.resteasy.spi.BadRequestException:
No authentication provider found for id: accounts-form-action</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.keycloak.services.resources.admin.AuthenticationManagementResource.addExecution(AuthenticationManagementResource.java:394)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at java.lang.reflect.Method.invoke(Method.java:497)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:107)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:133)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:107)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:133)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:395)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:78)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>at java.lang.Thread.run(Thread.java:745)</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>
<div>-- </div>
<div>Leonardo</div>
</div>
</div>
<hr style="height:1px;color:#C4C4C4;">
<div style="font-family:Arial;color:#848484;font-size:11px;"><i>Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não poderá usar, copiar ou divulgar as informações
nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação.
<br>
<br>
This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have
received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation<i></div>
</i></i>
</body>
</html>