Keycloak 用户临时锁定的自定义消息

Sar*_*ang 2 keycloak keycloak-services keycloak-gatekeeper

我正在使用 Kyecloak:4.8.0,并为我的领域启用了暴力攻击。现在,每当用户提供错误凭据 3 次时,用户将被暂时锁定。

但用户仍然会看到“无效的用户名/密码”。

根据此线程,Keycloak 有意这样做: https ://issues.jboss.org/browse/KEYCLOAK-5284

但我仍然想向用户表明他的帐户已被锁定。

有什么办法可以自定义此消息吗?

我尝试通过在自定义 keycloak 主题中添加消息来实现此目的,如下所示:

位置:themes\adminlte\login\messages\messages_en.properties

accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later.
Run Code Online (Sandbox Code Playgroud)

这个改变是行不通的。

Sar*_*ang 7

在查看了 Keycloak 基本代码后,我发现: Keycloak 使用类Messages.INVALID_USER中编写的属性中的 (invalidUserMessage) AbstractFormAuthenticator

这个类最后由 UsernamePasswordForm 扩展,现在将其更改为自定义消息,我编写了自定义身份验证器(Keycloak SPI),如下所示

public class CustomUsernameFormAuthenticator extends UsernamePasswordForm {

    @Override
    protected String tempDisabledError() {
        return Messages.ACCOUNT_TEMPORARILY_DISABLED;
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,在 keycloak 中部署 spi Jar 并在您的领域中启用它。我们就完成了:)