<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:&nbsp;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&nbsp;AccountsFormActionFactory class</li><li>Copied the JAR to providers folder</li><li>At the admin console, I choose Add execution from&nbsp;Registration-copy1 Registration Form Actions menu</li><li>At the providers list I choose &quot;Accounts Form Action&quot;</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>--&nbsp;</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&ccedil;&atilde;o confidencial e/ou privilegiada. Se voc&ecirc; n&atilde;o for o destinat&aacute;rio ou a pessoa autorizada a receber esta mensagem, n&atilde;o poder&aacute; usar, copiar ou divulgar as informa&ccedil;&otilde;es
 nela contidas ou tomar qualquer a&ccedil;&atilde;o baseada nessas informa&ccedil;&otilde;es. Se voc&ecirc; recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua coopera&ccedil;&atilde;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>