0

当用户在太短的时间内多次登录失败后,有没有办法让 Keycloak 登录屏幕告诉用户他们被暂时锁定,以便他们知道他们必须等待并稍后再试?

目前,它继续告诉他们他们的密码错误,所以他们可能会继续尝试,最终可能会被告知他们的正确密码不正确。

4

1 回答 1

0

Keycloak 使您可以定义自定义消息并提供自定义主题,您可以在其中覆盖某些视图和消息以及提供其他语言的消息。

https://www.keycloak.org/docs/latest/server_development/#_themes

自定义消息键

您可以修改消息键“invalidUserMessage”,即用户被锁定时显示的消息。它默认为'Invalid username or password'

我们通过为登录类型提供自定义主题来做到这一点,但您可以在'keycloak/themes/base/login/messages/messages_en.properties'修改 keycloak 安装提供的消息密钥。

自定义视图

当您提供自定义login-password.ftllogin.ftl时,取决于您使用的内容,然后您可以在渲染期间检查消息,并有条件地渲染仅在用户被锁定时显示的部分。

<#assign userLocked = message?? && message.summary == msg("invalidUserMessage")>
<#if section = "header" && !userLocked >...<#/if>

例如,当我们看到用户被锁定并向用户显示修改后的消息时,我们在 javascript 中使用它来禁用所有输入。

<script>
        const serverFieldErrors = {
            "password": "${(message.summary)!""}"
        }
        if (serverFieldErrors.password === "${msg('invalidUserMessage')}") {
            document.querySelectorAll("input").forEach((element) => element.setAttribute("disabled", "disabled"));
        }
    </script>

据我所知,keycloak 没有提供其他方法来处理这种用例。

于 2021-10-06T15:23:29.507 回答