首页 > 解决方案 > 用户临时锁定的 Keycloak 自定义消息

问题描述

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

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

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

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

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

我尝试通过在自定义 keycloak 主题中添加消息来做到这一点,如下所示:

位置:主题\adminlte\login\messages\messages_en.properties

accountTemporarilyDisabledMessage=Account is temporarily disabled, contact admin or try again later.

此更改不起作用。

标签: keycloakkeycloak-serviceskeycloak-gatekeeper

解决方案


通过 Keycloak 基本代码后,我发现:Keycloak 使用Messages.INVALID_USER(invalidUserMessage)来自类中编写的AbstractFormAuthenticator属性。

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

public class CustomUsernameFormAuthenticator extends UsernamePasswordForm {

    @Override
    protected String tempDisabledError() {
        return Messages.ACCOUNT_TEMPORARILY_DISABLED;
    }
}

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


推荐阅读