提问人:omar amer 提问时间:10/25/2023 更新时间:10/30/2023 访问量:36
在keycloak中使用自定义身份验证类,而不是AbstractUsernameFormAuthenticator
Using a custom authentication class in keycloak instead of AbstractUsernameFormAuthenticator
问:
所以我正在尝试使用一个自定义类,它将覆盖
AbstractUsernameFormAuthenticator
类已在 Keycloak 中使用。
1- 我创建了一个自定义提供程序 2-生成了一个罐子 3- 将 jar 添加到 keycloak 的 provider 目录中。
我正在使用 keycloak 版本 22.0.4
那么我错过了什么?
下面是具有重写方法的类
public class CustomAuthenticator extends UsernamePasswordForm {
@Override
protected String disabledByBruteForceError() {
return Messages.ACCOUNT_TEMPORARILY_DISABLED;
}
}
这是 CustomAuthenticatorFactory
public class CustomAuthenticatorFactory implements AuthenticatorFactory, ConfigurableAuthenticatorFactory {
public static final String PROVIDER_ID = "custom-authenticator";
private static final CustomAuthenticator SINGLETON = new CustomAuthenticator();
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String getDisplayType() {
return "Custom Authenticator";
}
@Override
public String getReferenceCategory() {
return null;
}
@Override
public boolean isConfigurable() {
return false;
}
@Override
public AuthenticationExecutionModel.Requirement[] getRequirementChoices() {
return Arrays.asList(AuthenticationExecutionModel.Requirement.REQUIRED).toArray(new AuthenticationExecutionModel.Requirement[0]);
}
@Override
public boolean isUserSetupAllowed() {
return false;
}
@Override
public String getHelpText() {
return null;
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return null;
}
@Override
public void init(Config.Scope scope) {
}
@Override
public void postInit(KeycloakSessionFactory keycloakSessionFactory) {
}
@Override
public void close() {
}
@Override
public Authenticator create(KeycloakSession session) {
return SINGLETON;
}
}
这是 resources/META-INF/services 中 org.keycloak.authentication.AuthenticatorFactory 的内容
com.identicum.keycloak.CustomAuthenticatorFactory
最后是 jboss-deployment-structure
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<module-alias name="deployment.keycloak-custom-authenticator"/>
<dependencies>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
<module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.keycloak.keycloak-services"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
1- 我创建了一个自定义提供程序 2-生成了一个罐子 3- 将 jar 添加到 keycloak 的 provider 目录中。
我正在使用 keycloak 版本 22.0.4
答:
0赞
omar amer
10/30/2023
#1
经过一番尝试,我终于能够做到了。您需要做的就是: 1- 将编译的 jar 添加到 keycloak 安装中的 providers 目录。 2- 复制登录流程,并向复制的流程添加自定义身份验证步骤。 3- 绑定流,使其成为使用的主流。
评论