Keycloak 当帐户被临时锁定时,我是否可以在KeyClope中捕获事件

Keycloak 当帐户被临时锁定时,我是否可以在KeyClope中捕获事件,keycloak,Keycloak,我正在使用KeyClope 3.4.3.FINAL,并查看是否有任何方法可以捕获帐户临时锁定/解锁的情况。我希望编写一个EventListener,根据事件类型触发,但我似乎找不到在帐户锁定时触发的任何事件 《钥匙斗篷》中有这样的事件吗?如果没有,有没有办法添加自己的自定义事件?我可以捕获AccountModified事件并处理它,但我看到触发的唯一事件是登录错误,它不会告诉我帐户是否被临时禁用/启用。经过一段时间的研究,我终于找到了通过登录错误事件的方法。虽然充其量,它会告诉我用户的帐户是否被

我正在使用KeyClope 3.4.3.FINAL,并查看是否有任何方法可以捕获帐户临时锁定/解锁的情况。我希望编写一个EventListener,根据事件类型触发,但我似乎找不到在帐户锁定时触发的任何事件


《钥匙斗篷》中有这样的事件吗?如果没有,有没有办法添加自己的自定义事件?我可以捕获AccountModified事件并处理它,但我看到触发的唯一事件是登录错误,它不会告诉我帐户是否被临时禁用/启用。

经过一段时间的研究,我终于找到了通过登录错误事件的方法。虽然充其量,它会告诉我用户的帐户是否被临时锁定,但不会告诉我帐户何时被解锁

临时锁定和解锁不是对帐户定义本身的更改,而是由
BruteForceDetector
类处理,该类独立管理该信息。也就是说,只有在显式请求类时,您才能确定帐户是锁定还是解锁。登录后,会检查
BruteForceDetector
,以确定用户的帐户是否被临时锁定

public void onEvent(Event event) {
    // Ignore excluded events
    if (eevent.getType() == EventType.LOGIN_ERROR) {
        RealmModel realm = session.realms().getRealm(event.getRealmId());
        UserModel user = session.userStorageManager().getUserById(event.getUserId(), realm);
        boolean isTempDisabled = session.getProvider(BruteForceProtector.class).isTemporarilyDisabled(session, realm, user);
        System.out.println("EVENT: " + toString(event) + ", tempDisabled=" + isTempDisabled + ", isEnabled=" + user.isEnabled() );
    }
}