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

Posted

技术标签:

【中文标题】用户临时锁定的 Keycloak 自定义消息【英文标题】:Keycloak Custom message on user temporary lock 【发布时间】:2019-11-28 11:27:07 【问题描述】:

我正在使用 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.

此更改无效。

【问题讨论】:

如果您这样做,智能暴力检测可以通过暂时锁定它们来查找系统中所有可用的电子邮件地址。这就是故意不添加锁定消息的原因 是的@Marcel 我明白了。谢谢你:) 【参考方案1】:

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

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

public class CustomUsernameFormAuthenticator extends UsernamePasswordForm 

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

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

【讨论】:

以上是关于用户临时锁定的 Keycloak 自定义消息的主要内容,如果未能解决你的问题,请参考以下文章

如何通过employeeNumber或自定义属性搜索keycloak用户?

Keycloak 自定义用户联合和身份提供者工作顺序

在 Keycloak 的更新用户配置文件中添加自定义验证

Keycloak:在社交身份提供者登录时传递自定义用户属性

keycloak 从自定义协议映射器抛出身份验证错误

如何从 java api 在 keycloak 中设置自定义用户属性