Keycloak 1.9.1-Final
我已经实现了以下自定义 FormActionFactory。
public class RegistrationFormActionFactory implements FormActionFactory{
public static final String PROVIDER_ID = "rc-registration-profile-action";
@Override
public FormAction create(KeycloakSession session){
return new RegistrationFormAction();
}
@Override
public String getDisplayType(){
return "RC Profile Validation";
}
...
以及以 org.keycloak.authentication.forms.RegistrationProfile 为模型的关联FormAction
public class RegistrationFormAction implements FormAction{
...
在 jar 的 META-INF/services 我有一个文件:org.keycloak.authentication.FormActionFactory
仅包含以下文本:
com.realcomp.keycloak.RegistrationFormActionFactory
在 Keycloak 管理页面中,我制作了Registration身份验证流程的副本并将其命名为Copy of Registration。向我的新流程添加执行时,我在可用提供程序的下拉列表中看到了我的自定义“ RC Profile Validation ”FormAction。选择后,我在 Keycloak 服务器日志中收到以下异常:
14:31:00,264 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-54) RESTEASY002005: Failed executing POST /admin/realms/master/authentication/flows/Copy of registration registration form/executions/execution: org.jboss.resteasy.spi.BadRequestException: No authentication provider found for id: rc-registration-profile-action
at org.keycloak.services.resources.admin.AuthenticationManagementResource.addExecution(AuthenticationManagementResource.java:394)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)
(omitted...)
有趣的旁注:如果我将我的 FormActionFactory 中的 PROVIDER_ID 更改为“ registration-profile-action ”,一切都会按预期工作。但是,这个PROVIDER_ID是RegistrationProfile类使用的,感觉不对。
我增加了日志记录的详细程度,看来我的 FormAction正在加载:
17:07:20,659 DEBUG [org.keycloak.services] (ServerService Thread Pool -- 50) Loaded SPI form-action (providers = [registration-profile-action, rc-registration-profile-action, registration-recaptcha-action, registration-password-action, registration-user-creation])
我可能错过了一些配置步骤。关于我在这里做错了什么的任何想法?