Как фильтровать пользователей Keycloak по диапазону дат настраиваемого атрибута для автоматического напоминания по элект ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как фильтровать пользователей Keycloak по диапазону дат настраиваемого атрибута для автоматического напоминания по элект

Сообщение Anonymous »

Проблема: Мне нужно внедрить планировщик, который отправляет напоминание о проверке электронной почты пользователям Keycloak через 30 дней после их первоначальной регистрации (если они еще не подтвердили свою электронную почту).
Мои требования:
  • Определить пользователей, у которых email_verified имеет значение false.
  • Отфильтровать этих пользователей на основе настраиваемого атрибута email-sent-date
  • Повторно отправить письмо с подтверждением с помощью Keycloak Admin API.
Дилемма: Я заглянул в Keycloak Admin REST API и нашел параметр q для поиска пользовательских атрибутов. Однако похоже, что API поддерживает только точные совпадения (например, q=last-sent:2024-01-01) и не поддерживает диапазон дат или фильтры неравенства (например, последняя отправка < 30 дней назад).
Мои предлагаемые решения:
  • Вариант 1: прямой запрос к базе данных (SQL). Я могу выполнить запрос к таблицам USER_ENTITY и USER_ATTRIBUTE, чтобы получить именно те идентификаторы, которые мне нужны.

    Проблема: Считается ли прямой запрос к базе данных Keycloak плохой практикой для операций только для чтения?
[*]Вариант 2: API Fetch & Фильтр. Получите всех непроверенных пользователей с помощью GET /users?emailVerified=false и отфильтруйте даты в логике моего приложения.
  • Озабоченность: Это не будет масштабироваться, если список непроверенных пользователей вырастет до тысяч.

Вопрос: Что рекомендуется? подход для этого в производственной среде? Есть ли способ выполнять запросы диапазона через API администратора или стандартным способом решения этой проблемы является чтение пользовательской базы данных SPI/direct?

Подробнее здесь: https://stackoverflow.com/questions/798 ... omated-ema

Вернуться в «JAVA»