当帐户暂时锁定时,我可以在 KeyCloak 中捕获事件吗
Is there an Event I can trap in KeyCloak when an account is temporarily locked
我正在使用 KeyCloak 3.4。3.FINAL 并查看是否有任何方法可以在帐户临时 locked/unlocked 时进行捕获。我希望编写一个基于事件类型触发的 EventListener,但我似乎找不到任何在帐户被锁定时触发的东西。
Keycloak中有这样的事件吗?如果没有,有没有办法添加我自己的自定义事件?我可以捕获一个 AccountModified 事件并使用它,但我看到唯一被触发的事件是 LOGIN_ERROR,它不会告诉我帐户是否暂时 disabled/enabled.
在研究了一段时间后,我终于找到了通过 LOGIN_ERROR 事件的方法。虽然充其量它会告诉我用户的帐户是否被暂时锁定,但不会告诉我帐户何时解锁。
临时锁定和解锁不是对帐户定义本身的更改,而是由独立管理该信息的 BruteForceDetector
class 处理。也就是说,只有在向 class 明确请求时,您才能确定该帐户是锁定还是解锁。登录后,将对 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() );
}
}
我正在使用 KeyCloak 3.4。3.FINAL 并查看是否有任何方法可以在帐户临时 locked/unlocked 时进行捕获。我希望编写一个基于事件类型触发的 EventListener,但我似乎找不到任何在帐户被锁定时触发的东西。
Keycloak中有这样的事件吗?如果没有,有没有办法添加我自己的自定义事件?我可以捕获一个 AccountModified 事件并使用它,但我看到唯一被触发的事件是 LOGIN_ERROR,它不会告诉我帐户是否暂时 disabled/enabled.
在研究了一段时间后,我终于找到了通过 LOGIN_ERROR 事件的方法。虽然充其量它会告诉我用户的帐户是否被暂时锁定,但不会告诉我帐户何时解锁。
临时锁定和解锁不是对帐户定义本身的更改,而是由独立管理该信息的 BruteForceDetector
class 处理。也就是说,只有在向 class 明确请求时,您才能确定该帐户是锁定还是解锁。登录后,将对 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() );
}
}